Anda di halaman 1dari 6

APUNTES DE OBJETO 1

Que es la programacin orientada a objeto: es una forma de entender un


problema identificando las principales entidades que se encuentran en el y su
propsito es facilitar una solucin informtica identificando los conceptos
relevantes presentes en el problema.
Que es un objeto: es cualquier cosa de la que puedas emitir un concepto, es
una abstraccin de una entidad del dominio de problema que tiene un
comportamiento, y este es expresado por un conjunto de mensajes que el
objeto es capaz de responder.
Un objeto tiene un comportamiento(que hace y como lo hace), un estado
interno( un conjunto de variables de instancia, es privado del objeto) y una
identidad(un objeto solo es idntico a si mismo, es una propiedad intrnseca de
los objetos)
No es lo mismo que igualdad: dos objetos pueden tener las mismas
propiedades pero no son el mismo objeto.
Que es una entidad: es un concepto conocido que representa una agrupacin
de objetos. Tomamos esta entidad como si fuera un molde que determina la
forma y caractersticas que el objeto va a tener.
Una entidad o concepto describe un conjunto de objetos del contexto del
problema, que tienen las mismas caractersticas y el mismo comportamiento.
Estos mismos son determinados por el contexto del problema o escenario.
Los objetos se comunican con otros a travs de mensajes, que es una
comunicacin dirigida a un objeto que le ordena que ejecute uno de sus
mtodos con ciertos parmetros asociados al evento que lo genero
Un modelo es una versin simplificada de algn fenmeno o entidad de
mundo real
Que significa modelar?: es un proceso de abstraccin donde tomamos una
versin reducida de lo que queremos representar
Cuando se habla de paradigma es la manera de pensar SUBJETIVA del
programador. El mismo programa puede tener tantas versiones como
programadores lo hagan.
que es un mtodo?: es la contraparte funcional del mensaje expresa (el
como se hace). Un mtodo puede modificar el estado interno, colaborar con
otros objetos, retornar y terminar.

Que son las clases?: son herramientas que ofrecen ciertos lenguajes que
implementan el paradigma, que permiten agrupar en un solo lugar la misma
implementacion de una responsabilidad compartida por distintos objetos.

ABSTRACCION: los humanos hemos desarrollado una tcnica


excepcionalmente potente para enfrentarnos a la complejidad, realizamos
abstracciones. Incapaces de dominar en su totalidad un objeto complejo,
decidimos ignorar sus detalles no esenciales, tratando en su lugar con el
modelo generalizado e idealizado del objeto.
Los 4 pilares de la programacin orientada a objeto
Abstraccin: es una de las vas fundamentales por la que los humanos
combatimos la complejidad. La abstraccin surge de un reconocimiento de las
similitudes entre ciertos objetos, situaciones o procesos del mundo real, y la
decisin de concentrarse en esas similitudes e ignorar por el momento las
diferencias.
La abstraccin es una descripcin simplificada o especificacin de un sistema
que enfatiza algunos de los detalles o propiedades del mismo mientras
suprime otros, una buena abstraccin es aquella que enfatiza detalles
significativos al lector o usuario y suprime detalles que son irrelevantes.
Una abstraccin denota las caractersticas esenciales de un objeto que lo
distinguen de todos los dems tipos de objeto y proporciona asi fronteras
conceptuales ntidamente definidas respecto a la perspectiva del observador.
Un PROTOCOLO denota las formas en las que un objeto puede actuar y
reaccionar, y de esta forma constituye la visin externa completa, estatica y
dinmica, de la abstraccin.
ENCAPSULAMIENTO
La abstraccin y el encapsulamiento son conceptos complementarios: la
abstraccin se centra en el comportamiento observable de un objeto, mientras
el encapsulamiento se centra en la implementacion que da lugar a este
comportamiento. El encapsulamiento se consigue a menudo mediante la
ocultacin de informacin, que es el proceso de ocultar todos los secretos
de un objeto que no contribuyen a sus caractersticas esenciales; tpicamente,
la estructura de un objeto esta oculta, asi como la implantacin de sus
mtodos.
El encapsulamiento es el proceso de almacenar en un mismo compartimiento
los elementos de una abstraccin que constituyen su estructura y su

comportamiento; sirve para separar el interfaz contractual de una abstraccin


y su implantacin.
MODULARIZACION
Consiste en dividir un programa en modulos que pueden compilarse
separadamente, pero que tienen conexiones con otros modulos.
La modularidad es la propiedad que tiene un sistema que ha sido
descompuesto en un conjunto de modulos cohesivos y dbilmente acoplados.
Cohesin: Medida de relacin funcional que existe entre las operaciones de una clase. Una
operacin cohesionada ejecutar una nica tarea sencilla y relacionndose poco o nada con las
dems operaciones de la clase. Una buena prctica es hacer operaciones altamente cohesivas,
para que las operaciones sean independientes unas de otras y al momento de hacer
modificaciones a una operacin el cambio afecte al menor nmero implementaciones posibles,
evitando los errores y mejorando el diseo de estructuras.
Acoplamiento: Grado de interdependencia que existe entre clases, refirindose a las relaciones
dependientes que puede haber entre clases. Una buena prctica es tener un bajo acoplamiento
para que al surgir una modificacin el cambio afecte al menor nmero de implementaciones
posibles. Esto disminuye errores y mejora el diseo de estructuras.

JERARQUIA:
frecuentemente un conjunto de abstracciones forma una jerarqua y la
identificacin de esas jerarquas en el diseo simplifica en gran medida la
comprensin del problema. La jerarqua es una clasificacin u ordenacin de
abstracciones.
La herencia implica una jerarqua de generalizacin/especializacin, en la que
una subclase especializa el comportamiento o estructura, mas general, de sus
superclases.
Herencia: significa que el comportamiento y los datos asociados con clases
hijas son una extensin de las propiedades asociadas a clase padre. Una
subclase tendr todas las propiedades de la clase padre y tambin otras
propiedades. Una clase hija es una forma ms especializada de la clase padre.
Tambin es, en cierto sentido, una contraccin del tipo de la clase padre.
Formas de herencia:
Subclases de la especializacin: la clase nueva es una especializacin de
la clase padre.
Subclase por especificacin: las clases tienen una misma interface .

Subclase por construccin: una clase hereda casi todas las funcionalidades
del padre, capaz cambiando solo los nombres de los mtodos usados para la
interfaz.
Subclase por generalizacin: una subclase extiende el comportamiento del
padre para hacer un objeto mas generalizado
Subclase por extensin: modifica o expande las funciones ya hechas,
agrega nuevas habilidades.
Subclase por limitacin: ocurre cuando el comportamiento de la subclase es
menos o mas restrictiva que el del padre. Al igual que la 4ta, pasa cuando se
construye en base a clases que no deben o no pueden modificarse.
Subclase por diferencia: cuando dos o mas clases tienen implementaciones
parecidas pero no tienen relacin jerarquica.
Subclase por combinacin: la clase hijo tiene dos o mas padres.
Razones para usar la herencia:
1- Reutilizacin de cdigo: una clase hija puede heredar el comportamiento
desde una clase padre, el cdigo no tiene porque ser reescrito para la
clase hija. Esto pude reducir enormemente la cantidad de cdigo
necesario para desarrollar una nueva idea.
2- Reutilizacin de concepto: una clase hija anula el comportamiento
definido en la clase padre. Hijo y el padre comparten la definicin del
mtodo( comportamiento)
Casting: es utilizado para la conversin explicita del tipo de una expresion
Polimorfismo: permite que un mismo nombre pueda quedar asociado a
diferentes significados, dentro de un mismo ambiente de referenciamiento. Una
variable polimrfica puede quedar ligada a objetos de diferentes clases. La
ligadura entre una variable polimrfica y un objeto se establece a travs de
una asignacin polimrfica.
dos o mas objetos son polimrficos con respecto a un mensaje, si todos
pueden entender ese mensaje, aun cuando cada uno lo haga de un modo
diferente.
-

Mismo mensaje puede ser enviado a diferentes objetos.


Distintos receptores reaccionan diferente( diferentes mtodos).
En algunos casos puede suceder que varios tipos de objetos distintos
hayan sido definidos para responder a ese mensaje, lo que permite
intercambiarlos sin que el objeto emisor note la diferencia.

Ventajas del uso del polimorfismo:

1.
2.
3.
4.
5.
6.

Cdigo genrico.
Objetos desacoplados
Objetos intercambiables
Objetos reutilizables.
Programar por protocolo,no por implementacion.
Trabajamos con un nivel de acoplamiento; el objeto emisor conoce lo
minimo indispensable del objeto al que le esta enviando el mensaje, lo
cual brinda flexibilidad a nuestro programa y evita la propagacin de
cambios locales en el resto del sistema.

Binding dinamico: permite que un mensaje se ligue a un mtodo en


ejecucin, dependiendo de la clase a la que pertenece el objeto que recibe este
mensaje.
Es un mecanismo que hace posible que exista el polimorfismo.
Binding: tiempo en que se liga el envio de un mensaje con la implementacion
del mtodo correspondiente.
-

Estatico: se resuelve en tiempo de compilacin


Dinamico: se resuelve en tiempo de ejecucin.

El binding dinamico nos permite programar despreocupndonos del mecanismo


de seleccin del mtodo adecuado.
Solo nos importa que los objetos respondan a los mensaje que les enviamos.
El if en lenguajes OO significa la falta de objetos polimrficos, las decisiones
son tomadas por los programadores y hay una mala asignacin de
responsabilidades. El uso del if se justifica cuando se hacen comparaciones
simples.
Es correcto usar el if cuando la condicin a evaluar no depende del receptor del
mensaje, o no se ve alterada en el caso de agregar nuevos tipos de objeto.
Si la condicin a evaluar depende del recepto del mensaje y crece al agregar
nuevos tipos de objeto, su uso es incorrecto.
Clases abstractas: en el diseo de una aplicacin es posible definir una clase
que factoriza propiedades de otras clases mas especificas, sin que existan en
el problema objetos concretos vinculados a esta clase mas general. En este
caso la clase se dice abstracta porque fue creada artificialmente para lograr un
modelo mas adecuado. En ejecucin no va a haber instancias de una clase
abstracta.
Esta clase puede incluir uno, varios o todos o ningn mtodo abstracto. Si una
clase hereda de una clase abstracta y no implementa todos los mtodos
abstractos, tambin debe ser definida como abstracta. Una clase concreta

debe implementar todos los mtodos abstractos de sus clases ancestro. El


constructor de una clase abstracta solo va a ser invocado desde los
costructores de las clases derivadas.
Las clases abstractas sirven: la herencia es un mecanismo poderoso para
factorizar comportamiento comn. Se puede mejorar el algoritmo de la
superclase y automticamente lo heredaran todas sus subclases. Template
method.
No necesitan estar completamente implementadas y pueden especificar
mtodos que sera definidos por sus subclases.
Polimorfismo (upcasting): El polimorfismo ayudado de la herencia es la posibilidad de que una
referencia a objetos de una clase pueda conectarse con objetos de descendientes de esa clase. El
polimorfismo nos permite hacer una generalizacin buscando puntos en comn a todos los objetos
en un ancestro. En Java se puede implementar el polimorfismo de diferentes formas, ya sea como
la asignacin de una referencia hija a una padre, como el paso de parmetros a una operacin que
recibe parmetros de mltiples clases, permitiendo la creacin de estructuras de datos que
soporten objetos de distintas clases, entre otras. Se debe tomar en cuenta que al hacer
polimorfismo el objeto polimrfico solo puede hacer referencia a las operaciones del objeto al que
se ha conectado. Tambin es posible hacer polimorfismo con las interfaces de java.
La operacin contraria al upcasting es el downcasting, y es cuando solemos necesitar recuperar
el objeto original despus de haber hecho una conexin polimorfa. Lo que quiere decir que en vez
de hacer una generalizacin lo que hacemos es una especializacin, sin embargo no se puede
hacer un downcasting simplemente conectando una referencia como en el upcasting, para esto es
necesario hacer un simple casting que especifique la clase original.
Podemos hacer lo siguiente
Empleado emp = new Ejecutivo();
Lo anterior se denomina upcasting. Como se observa creamos un objeto de tipo Ejecutivo
pero lo asignamos a un objeto de tipo Empleado.
Con lo cual podemos acceder a los mtodos de Empleado pero no de Ejecutivo salvo el caso
que tengan un mtodo con el mismo nombre, en cuyo caso accederemos al del Ejecutivo.
Pero podemos hacer
Ejecutivo ej = (Ejecutivo)emp;
Entonces podemos acceder a todos los mtodos de ejecutivo. Esto se denomina
downcasting.

Anda mungkin juga menyukai