Conceptos de Programación

Orientada a Objetos

Fundamentos de Programación
Orientada a Objetos

Desarrollo de Software
 1960-1975 (Orientado a Procesos)
Refinamiento paso a paso; Desarrollo Top-
Down

 1975-1990 (Orientado a Datos)
Normalización, Sistema de Base de Datos

Desarrollo de Software
1990 – actualmente (Orientado a Objetos)
significa que el software se organiza como
una colección de objetos discretos que
contienen tanto la estructura de datos como
un comportamiento.

Sistema  Es un conjunto de elementos que interactuan entre si.  En un sistema Orientado a Objetos los elementos toman el nombre de “Objetos” .

Sistema O.O Ej: Una Empresa Gerente General Los colaboradores del gerente Los colaboradores de los colaboradores del gerente Algunas personas tienen la misma función colaboraciones .

Sistema de Información Orientado a Objetos  NO es  SI es Base de Datos +  Conjunto de objetos Programas colaborativos Se rige a técnicas de  Nueva forma de Programación pensar .

Sistema de Información Orientado a Objetos  SI es  Se trabaja en términos del dominio (Análisis del conocimiento y los conceptos del negocio)  Proceso conceptual independiente .

Un Objeto  Objeto es algo que tiene sentido en el contexto de la aplicación.  Es un concepto. . abstracción o cosa con límites bien definidos y con significado a efectos del problema.

. Un Objeto: Propósitos  Promover la comprensión del mundo real  Proporcionar una base práctica para la implementación por computadora.

. color y tamaño. con su propia identidad. Un Objeto: Características  tiene una identidad  La identidad no es una característica del objeto. pero cada una no deja de ser un individuo propio. es definida por el sistema propiamente y no puede ser cambiada.  Puedo tener 2 manzanas exactamente iguales en forma.

etc. este podría tener un método dar_examen . forma.  tiene comportamiento  este puede ser descrito por los métodos  los métodos forman parte del objeto y nos sirven como una interfaz para interactuar con el mismo  por ejemplo si tengo un objeto estudiante. Un Objeto  tiene un estado  este puede ser descrito por las características (atributos) del mismo  una característica de un objeto podría ser su color. tamaño.

 ¿Cuáles serán sus atributos?  ¿Cuáles serán sus métodos? . Ejercicio  Piense en un sistema en el cual se desea definir un objeto que represente un contador.

Servicios: Lo que  Un entero puedo Hacer Incrementar Decrementar  Los métodos serían: Reiniciar ( a 0)  Incrementar  Decrementar  Reiniciar a 0 . Solución MiContador  Nuestro objeto posee un atributo Dato (lo que sé) para guardar el Estado : Entero valor del conteo.

. Interacción entre Objetos  Los objetos se comunican (colaboran entre sí) usando mensajes  El cliente invoca el comportamiento del servidor  La recepción de un mensaje provoca entonces que uno de los métodos de mi objeto sea ejecutado.

etc Clase Silla es Atributos color material Métodos pintar do …… Fin clase silla . •tienen color •están hechas de un material. Clasificación de Objetos Es la abstracción de cualidades comunes Pensemos cuáles serían las características comunes del conjunto de sillas presentado.

Abstracción  Es el proceso de capturar los detalles fundamentales de un objeto mientras se suprimen o ignoran los detalle.  Su esencia se basa en la descomposición de un sistema complejo en sus partes más fundamentales y describir estas partes con un lenguaje sencillo y preciso. .

Abstracción  Un modo poderoso de gestionar la abstracción es mediante clasificaciones jerárquicas. permitiendo que un sistema complejo se rompa en partes más significativas y fáciles de entender. .

Tipos de Objetos Cuando clasificamos los objetos. estamos generalizando las propiedades que puede tener el objeto. esta generalización define el Tipo del Objeto El tipo del objeto es un patrón para todos los objetos de este tipo Este tipo se denomina tipo de dato abstracto El tipo de dato abstracto es más conocido como clase .

Incrementar Decrementar es do valor_conteo := valor_conteo -1 end -. 0 Incrementar es do valor_conteo := valor_conteo +1 222 01 end -.Decrementar Reiniciar es valor_conteo := 0 end – reiniciar end clase Contador . Clase contador MiContador clase Contador Atributos valor_conteo Métodos + .

. Instancia de Clase  Cada objeto es una instancia de su clase. de los atributos y las operaciones con las demás instancias de clases.  Toda instancia de la clase posee:  Su propio valor para cada uno de los atributos. pero comparte los nombres.

de los detalles internos de implementación del mismo. consiste en separar los aspectos externos del objeto. Encapsulamiento  Llamada también “ocultamiento de información”. . a los cuales puede acceder otros objetos. que quedan ocultos para los demás.

Ocultamiento de Información: Los detalles de la implementación de los métodos son ocultados para los clientes. Encapsulamiento METODOS •Los datos y los métodos para manipular los datos son una sola Mensaje DATOS unidad. . están encapsulados en el objeto. •Los datos parte del objeto pueden ser manipulados únicamente por la invocación de los métodos publicados en la interfase del objeto.

. donde se define la estructura y el comportamiento que serán compartidos por el grupo de objetos pertenecientes a la misma. Encapsulamiento  En Java la base del encapsulamiento es la “clase”.

Encapsulamiento  Para hacer referencia a los componentes accesibles de un objeto será necesario especificar su sintaxis nombreObjeto.nombreComponente. .

Encapsulamiento Métodos privados Variables de Métodos públicos instancia privadas .

Incrementar  Entonces: Los datos-atributos son descritos junto con las rutinas (métodos) que permiten manipularlos. Encapsulación  Los datos parte del objeto pueden ser manipulados únicamente por la invocación de los métodos publicados en la interfase del objeto.reiniciar  MiContador.estado := 45 MiContador. .Incrementar MiContador.Incrementar MiContador.Incrementar 45 MiContador. MiContador.Incrementar veces ! …. MiContador.

Herencia  Es compartir atributos y operaciones entre clases tomando como base una relación jerárquica.  Es la capacidad para crear nuevas clases(descendientes) que se construyen sobre otras existentes. permitiendo que éstas les trasmitan sus propiedades. .

Herencia  En POO. de la cual hereda sus propiedades. . la reutilización de códigos se efectúa creando una subclase que constituye una restricción o extensión de la clase base.

bien explícita o implícitamente. Herencia  Cada clase que se define en Java se hereda de una clase existente.  Un tipo de objeto puede tener subtipos Ej: Un tipo de objeto cuenta puede tener subtipos ‘cuenta de ahorrros’ y ‘cuenta corriente’ .

Herencia  El tipo de objeto cuenta es una clase generalizada (Clase Abstracta)  Los subtipos son clases especializadas  Las clases especializadas heredan los atributos y métodos de la clase general. .

Herencia Cuenta Clase Abstracta Cuenta de ahorros Cuenta Corriente Clase Especializada .

Herencia Animal Superclase Subclases Insecto Mamífero Pájaro de Animales Persona Hombre Mujer .

Subclase o clase hija. clase extendida o clase  Se puede anular(reemplazar) derivada métodos heredados y proporcionar implementaciones especializadas para sus métodos . teniendo mayor funcionalidad. Herencia Elemento Descripción Superclase o clase padre Se pueden reutilizar o cambiar los o clase base métodos  Se pueden añadir nuevos datos y nuevos métodos.

tiene herencia múltiple. •Si tiene más de una clase padre. •No tener descendientes(hijos). variables) de todas las clases clase extendida o clase antecedentes en la jerarquía de derivada todas las clases base. Importante Una Clase: •Puede no tener padres. está es clase base o clase raíz. •Si sólo tiene una clase padre. tiene herencia simple. Herencia Elemento Descripción  Hereda el estado(declaración de Subclase o clase hija. se llama clase hoja. .

Herencia clase Cuenta Deposito (entrada_cantidad) es Atributos do no_cuenta balance := balance + balance entrada_cantidad cierre end --Deposito Métodos Retiro (entrada_cantidad) es Abrir (entrada_noCuenta) es do do balance := balance – no_cuenta := entrada_cantidad entrada_noCuenta end -.Retiro balance := 0 cierre := 0 Cierre es end -.Abrir do cierre := 1 end -.Clase Cuenta .Cierre end -.

. Polimorfismo  Una subclase tiene la posibilidad de sobrescribir los métodos heredados  pueden existir 2 subclases que a pesar de poseer los mismos atributos e interfaces son diferentes  presentan formas diferentes (polimorfismo) sin cambiar la naturaleza de sí mismas.

Polimorfismo Diferentes objetos reaccionan de diferente forma al mismo mensaje (al mismo evento) “IMPRIMIR” “DEPOSITAR” Iniciar Iniciar Abrir Abrir Imprimir Imprimir Depositar Depositar Impresora Laser Impresora a tinta Cuenta Corriente Cuenta de Ahorros .