Consiste en obtener las partes
fundamentales de un sistema
y describirlas de una manera
simple y precisa.
Denota las características
esenciales de un objeto que lo
distinguen de otros tipos de
objetos. Este proceso siempre es
relativo al observador
Encapsulamiento
Oculta los detalle de la
implementación interna de
una clase
Los usuarios solo tienen acceso a la
interfaz pública de la clase y sus
funcionalidades
Estandar
Abierto
Se puede acceder a la clase
desde cualquier parte
Protegido
Solo se puede acceder desde la
clase y las que ésta hereda
Semi
cerrado
Solo accesible desde la clase heredada
Cerrado
Solo accesible desde la clase
Modularidad
Es la organización del código en diferentes
componentes que cumplen funcionalidades
específicas
Los componentes deben interactuar
correctamente para que el sistema
funcione como esta planeado
Tipificación
Permite la agrupación
de objetos en tipos
Jerarquía de clases
Consiste en agrupar definiciones abstractas que son
similares por niveles, partiendo de lo más general hasta
lo más específico
Utiliza la relación "es un"
Polimorfismo
Es la capacidad de referirse a objetos de
clases distintas en una jerarquía utilizando
el mismo elemento de programa (método)
para realizar la misma operación, pero de
manera diferente.
Relaciones de clases
Asociación
Simple
Inversa
Reflexiva
Agregación
Herencia
Especificación
Generalización
Dependencia
Cuentan con multiplicidad,
es decir, cuántos objetos de
cada tipo intervienen en la
relacion
Conceptos de la POO
Clase
Una clase es un prototipo (plantilla) que contiene una colección de
datos (atributos) y un conjunto de métodos (comportamiento) que
manipulan los datos o que interactúan con objetos relacionados.
Métodos (Comportamiento)
Atributos (Datos)
Objeto
Es una instancia de la clase
Sobrecarga de Métodos
Definir un método mas de una vez dentro de una
misma clase; la forma de identificar cuál de los métodos es el
referido será con base en el número y tipo de sus argumentos.
Sobrecarga de Operadores
Modificar los operadores para que cumplan una doble funcionalidad:
soportan operaciones con operandos de tipos de datos primitivos del
lenguaje, y además soportan operaciones con operandos de tipos de datos
definidos por el usuario (clases), siempre y cuando éstos estén definidos.
Constructores
Un construtor es un conjunto de instrucciones utilizadas para inicializar la instancia de una clase.
Constructor por omisión
En caso de no definir ningún constructor el objeto utilizará el constructor por omisión proporcionado
por el lenguaje de programación utilizado.
Un constructor siempre tiene el mismo nombre de la clase
Es posible definir uno o más constructores en una misma clase.
Redefinición de Métodos
Miembros estáticos
Significa que solo se tendrá una sola copia de la variable declarada como static, esto es, las instancias de la
clase no tendrán ninguna copia.
Formas de acceso
Public
Permite a acceder al elemento desde cualquier
clase, independientemente de que esta pertenezca
o no al paquete en que se encuentra el elemento.
Private
Es el modificador más restrictivo y especifica que los
elementos que lo utilizan sólo pueden ser accedidos
desde la misma clase en la que se encuentran.
Protected
Indica que los elementos sólo pueden ser accedidos desde su mismo
paquete y desde cualquier clase que extienda la clase en que se encuentra,
independientemente de si esta se encuentra en el mismo paquete o no.
Default
Si no elegimos ningún modificador, se usa el de por defecto, que sólo
puede ser accedido por clases que están en el mismo paquete.
Clase abstracta
Este Tipo de Clases nos permiten crear “método generales”, que recrean
un comportamiento común, pero sin especificar cómo lo hacen.
Estas clases como son generalidades no pueden ser instanciadas por ningún
objeto (se dice que su nivel de abstracción es demasiado alto), entonces su
único fin es ser heredado/extendido por otras clases.
Métodos abstractos
Un método abstracto es un método declarado pero no implementado, es decir, es un
método del que solo se escribe su nombre, parámetros y tipo devuelto pero no su código.
Los métodos abstractos se escriben sin llaves {} y con ; al final de la declaración.