11
La programación Orientada a objetos (POO) es una forma especial de programar, más cercana a como expresaríamos las cosas en la vida real que otros tipos de programación. Con la POO tenemos que aprender a pensar las cosas de una manera distinta, para escribir nuestros programas en términos de objetos, propiedades, métodos y otras cosas que veremos rápidamente para aclarar conceptos y dar una pequeña base que permita soltarnos un poco con este tipo de programación. Clases en POO Las clases son declaraciones de objetos, también se podrían definir como abstracciones de objetos. Esto quiere decir que la definición de un objeto es la clase. Cuando programamos un objeto y definimos sus características y funcionalidades en realidad lo que estamos haciendo es programar una clase. En los ejemplos anteriores en realidad hablábamos de las clases coche o fracción porque sólo estuvimos definiendo, aunque por encima, sus formas. Propiedades en clases Las propiedades o atributos son las características de los objetos. Cuando definimos una propiedad normalmente especificamos su nombre y su tipo. Nos podemos hacer a la idea de que las propiedades son algo así como variables donde almacenamos datos relacionados con los objetos. Métodos en las clases Son las funcionalidades asociadas a los objetos. Cuando estamos programando las clases las llamamos métodos. Los métodos son como funciones que están asociadas a un objeto. Objetos en POO Los objetos son ejemplares de una clase cualquiera. Cuando creamos un ejemplar tenemos que especificar la clase a partir

La Programación Orientada a Objetos

Embed Size (px)

DESCRIPTION

programacion

Citation preview

La programacin Orientada a objetos (POO) es una forma especial de programar, ms cercana a como expresaramos las cosas en la vida real que otros tipos de programacin.Con la POO tenemos que aprender a pensar las cosas de una manera distinta, para escribir nuestros programas en trminos de objetos, propiedades, mtodos y otras cosas que veremos rpidamente para aclarar conceptos y dar una pequea base que permita soltarnos un poco con este tipo de programacin.Clases en POOLas clases son declaraciones de objetos, tambin se podran definir como abstracciones de objetos. Esto quiere decir que la definicin de un objeto es la clase. Cuando programamos un objeto y definimos sus caractersticas y funcionalidades en realidad lo que estamos haciendo es programar una clase. En los ejemplos anteriores en realidad hablbamos de las clases coche o fraccin porque slo estuvimos definiendo, aunque por encima, sus formas.Propiedades en clasesLas propiedades o atributos son las caractersticas de los objetos. Cuando definimos una propiedad normalmente especificamos su nombre y su tipo. Nos podemos hacer a la idea de que las propiedades son algo as como variables donde almacenamos datos relacionados con los objetos.Mtodos en las clasesSon las funcionalidades asociadas a los objetos. Cuando estamos programando las clases las llamamos mtodos. Los mtodos son como funciones que estn asociadas a un objeto.Objetos en POOLos objetos son ejemplares de una clase cualquiera. Cuando creamos un ejemplar tenemos que especificar la clase a partir de la cual se crear. Esta accin de crear un objeto a partir de una clase se llama instanciar (que viene de una mala traduccin de la palabra instace que en ingls significa ejemplar). Por ejemplo, un objeto de la clase fraccin es por ejemplo 3/5. El concepto o definicin de fraccin sera la clase, pero cuando ya estamos hablando de una fraccin en concreto 4/7, 8/1000 o cualquier otra, la llamamos objeto.Para crear un objeto se tiene que escribir una instruccin especial que puede ser distinta dependiendo el lenguaje de programacin que se emplee, pero ser algo parecido a esto.miCoche = new Coche()Con la palabra new especificamos que se tiene que crear una instancia de la clase que sigue a continuacin. Dentro de los parntesis podramos colocar parmetros con los que inicializar el objeto de la clase coche.La programacin orientada a objetos se basa en la programacin de clases; a diferencia de la programacin estructurada, que est centrada en las funciones.Una clase es un molde del que luego se pueden crear mltiples objetos, con similares caractersticas.Una clase es una plantilla (molde), que define atributos (variables) y mtodos (funciones)La clase define los atributos y mtodos comunes a los objetos de ese tipo, pero luego, cada objeto tendr sus propios valores y compartirn las mismas funciones.Debemos crear una clase antes de poder crear objetos (instancias) de esa clase. Al crear un objeto de una clase, se dice que se crea una instancia de la clase o un objeto propiamente dicho.La estructura de una clase es:class [nombre de la clase] { [atributos o variables de la clase] [mtodos o funciones de la clase] [main]}

13.1. ModificadoresLos modificadores son elementos del lenguaje que se colocan delante de la definicin de variables locales, datos miembro, mtodos o clases y que alteran o condicionan el significado del elemento. En captulos anteriores se ha descrito alguno, como es el modificadorstaticque se usa para definir datos miembros o mtodos como pertenecientes a una clase, en lugar de pertenecer a una instancia. En captulos posteriores se tratarn otros modificadores comofinal,abstractosynchronized. En este captulo se presentan los modificadores de acceso, que son aquellos que permiten limitar o generalizar el acceso a los componentes de una clase o a la clase en si misma.13.2. Modificadores de accesoLos modificadores de acceso permiten al diseador de una clase determinar quien accede a los datos y mtodos miembros de una clase.Los modificadores de acceso preceden a la declaracin de un elemento de la clase (ya sea dato o mtodo), de la siguiente forma:[modificadores]tipo_variablenombre;[modificadores]tipo_devueltonombre_Metodo ( lista_Argumentos );Existen los siguientes modificadores de acceso: public- Todo el mundo puede acceder al elemento. Si es un dato miembro, todo el mundo puede ver el elemento, es decir, usarlo y asignarlo. Si es un mtodo todo el mundo puede invocarlo. private- Slo se puede acceder al elemento desde mtodos de la clase, o slo puede invocarse el mtodo desde otro mtodo de la clase. protected- Se explicar en el captulo dedicado a laherencia. sin modificador - Se puede acceder al elemento desde cualquier clase del package donde se define la clase.Pueden utilizarse estos modificadores para cualquier tipo de miembros de la clase, incluidos los constructores (con lo que se puede limitar quien puede crear instancias de la clase).En el ejemplo los datos miembros de la clase Punto se declaran como private, y se incluyen mtodos que devuelven las coordenadas del punto. De esta forma el diseador de la clase controla el contenido de los datos que representan la clase e independiza la implementacin de la interface.classPunto {privateintx , y ;staticprivateintnumPuntos = 0;

Punto (inta ,intb ) { x = a ; y = b; numPuntos ++ ; }

intgetX() {returnx; }

intgetY() {returny; }

staticintcuantosPuntos() {returnnumPuntos; }

}Si alguien, desde una clase externa a Punto, intenta:. . .Punto p =newPunto(0,0);p.x = 5;. . .obtendr un error del compilador.13.3. Modificadores de acceso para clasesLas clases en si mismas pueden declararse: public- Todo el mundo puede usar la clase. Se pueden crear instancias de esa clase, siempre y cuando alguno de sus constructores sea accesible. sin modificador - La clase puede ser usada e instanciada por clases dentro del package donde se define.Las clases no pueden declararse niprotected, niprivate.13.4. Son importantes los modificadores de acceso?Los modificadores de acceso permiten al diseador de clases delimitar la frontera entre lo que es accesible para los usuarios de la clase, lo que es estrictamente privado y 'no importa' a nadie ms que al diseador de la clase e incluso lo que podra llegar a importar a otros diseadores de clases que quisieran alterar, completar o especializar el comportamiento de la clase.Con el uso de estos modificadores se consigue uno de los principios bsicos de la Programacin Orientada a Objetos, que es la encapsulacin: Las clases tienen un comportamiento definido para quienes las usan conformado por los elementos que tienen un acceso pblico, y una implementacin oculta formada por los elementos privados, de la que no tienen que preocuparse los usuarios de la clase.Los otros dos modificadores, protected y el acceso por defecto (package) complementan a los otros dos. El primero es muy importante cuando se utilizan relaciones de herencia entre las clases y el segundo establece relaciones de 'confianza' entre clases afines dentro del mismo package. As, la pertenencia de las clases a un mismo package es algo ms que una clasificacin de clases por cuestiones de orden.Cuando se disean clases, es importante pararse a pensar en trminos de quien debe tener acceso a que. Qu cosas son parte de la implantacin y deberan ocultarse (y en que grado) y que cosas forman parte de la interface y deberan ser pblicas.

El concepto de encapsulacinLa encapsulacin es un mecanismo que consiste en organizar datos y mtodos de una estructura, conciliando el modo en que el objeto se implementa, es decir, evitando el acceso a datos por cualquier otro medio distinto a los especificados. Por lo tanto, la encapsulacin garantiza la integridad de los datos que contiene un objeto.Ocultacin de datosEl usuario de una clase en particular no necesita saber cmo estn estructurados los datos dentro de ese objeto, es decir, un usuario no necesita conocer la implementacin Al evitar que el usuario modifique los atributos directamente y forzndolo a utilizar funciones definidas para modificarlos (llamadasinterfaces), se garantiza la integridad de los datos (por ejemplo, uno puede asegurarse de que el tipo de datos suministrados cumple con nuestras expectativas bien que los se encuentran dentro del periodo de tiempo esperado).La encapsulacin define los niveles de acceso para elementos de esaclase. Estos niveles de acceso definen los derechos de acceso para los datos, permitindonos el acceso a datos a travs de un mtodo de esa clase en particular, desde una claseheredadao incluso desde cualquier otra clase. Existen tres niveles de acceso: pblico: funciones de toda clase pueden acceder a los datos o mtodos de una clase que se define con el nivel de accesopblico. Este es el nivel de proteccin de datos ms bajo protegido: el acceso a los datos est restringido a las funciones de clasesheredadas, es decir, las funciones miembro de esa clase y todas lassubclases privado: el acceso a los datos est restringido a los mtodos de esa clase en particular. Este es nivel ms alto de proteccin de datos

HERENCIA:

-CONCEPTOS:

herncia:Es una propiedad que permite que los objetos sean creados a partir de otros ya existentes, obteniendo caractersticas (mtodos y atributos) similares a los ya existentes. Es la relacin entre una clase general y otra clase mas especifica. Es un mecanismo que nos permite crear clases derivadas a partir de clase base, Nos permite compartir automticamente mtodos y datos entre clases subclases y objetos. Por ejemplo: Si declaramos una clase prrafo derivada de un clase texto todos los mtodos y variables asociadas con la clase texto son automticamente heredados por la subclase prrafo.[1]

herencia:Este quizas es el tema que mas problemas causa al estudiante; sin embargo, no es dificil en su concepcin.El objeto Persona es un objeto muy generico y limitado en si; asi que se puede considerar como un objeto Abstracto; ya que por si mismo no puede crear una persona completa; sin embargo, sus funciones basicas son las mismas en todos los seres humanos, con diferencias puntuales, asi que podemos crear dos objetos Hombre y Mujer, que hereden todas sus caracteristicas genericas como respirar, hablar, nombre, etc, del objeto Persona, y sea en la implementacin de cada objeto donde empiezen las diferencias.[5]

-Ejemplo en Java [editar] public class Mamifero { private int patas; private String nombre; public void imprimirPatas() { System.out.println(nombre + tiene + patas + patas\n); } public Mamifero(String nombre, int patas) { this.nombre = nombre; this.patas = patas; } } public class Perro extends Mamifero { public Perro(String nombre){ super(nombre, 4); } } public class Gato extends Mamifero{ public Gato(String nombre){ super(nombre, 4); } } public class CreaPerro { public static void main(String [] args) { Perro bobi = new Perro(Bobi); bobi.imprimirPatas(); /*Est en la clase mamfero*/ } }

De forma general un ArrayList en Java se crea de la siguiente forma:ArrayList nombreArray = new ArrayList();Esta instruccin crea el ArrayListnombreArrayvaco.Un arrayList declarado as puede contener objetos de cualquier tipo.Por ejemplo:ArrayList a = new ArrayList();a.add("Lenguaje");a.add(3);a.add('a');a.add(23.5);Los elementos del arrayList a son:Lenguaje2a23.5Es decir,un ArrayList puede contener objetos de tipos distintos.En este ejemplo, el primer objeto que se aade es el String Lenguaje. El resto no son objetos. Son datos de tipos bsicos pero el compilador los convierte automticamente en objetos de suclase envolvente(clase contenedora o wrapper) antes de aadirlos al array.Un array al que se le pueden asignar elementos de distinto puede tener alguna complicacin a la hora de trabajar con l. Por eso, una alternativa a esta declaracin es indicar el tipo de objetos que contiene. En este caso, el array solo podr contener objetos de ese tipo.De forma general:ArrayList nombreArray = new ArrayList();tipodebe ser una clase. Indica el tipo de objetos que contendr el array.No se pueden usar tipos primitivos. Para un tipo primitivo se debe utilizar su clase envolvente.Por ejemplo:ArrayList numeros = new ArrayList();Crea el arraynumerosde enteros.MTODOS DE ARRAYLISTAlgunos mtodos que proporciona ArrayList son:MTODODESCRIPCIN

size()Devuelve el nmero de elementos (int)

add(X)Aade el objeto X al final. Devuelve true.

add(posicin, X)Inserta el objeto X en la posicin indicada.

get(posicion)Devuelve el elemento que est en la posicin indicada.

remove(posicion)Elimina el elemento que se encuentra en la posicin indicada. Devuelve el elemento eliminado.

remove(X)Elimina la primera ocurrencia del objeto X. Devuelve true si el elemento est en la lista.

clear()Elimina todos los elementos.

set(posicin, X)Sustituye el elemento que se encuentra en la posicin indicada por el objeto X. Devuelve el elemento sustituido.

contains(X)Comprueba si la coleccin contiene al objeto X. Devuelve true o false.

indexOf(X)Devuelve la posicin del objeto X. Si no existe devuelve -1