¿QUE ES LA P.O.O.?
*Se puede definir la P.O.O. como una técnica o estilo de programación
que utiliza objetos como bloque esencial de construcción.
La Programación Orientada a objetos permite que el código sea
reutilizable, organizado y fácil de mantener. Sigue el principio de
desarrollo de software utilizado por muchos programadores
*La POO no es un lenguaje de programación, más bien se puede aplicar a
muchos lenguajes, como el C++, Python, etc.
CARACTERISRICAS DE LA PROGRMACION ORIENTADA A
OBJETOS
Esta se divide en 4 características que la fundamenta.
Abstracción: es cuando el usuario interactúa solo con los
atributos y métodos seleccionados de un objeto, utilizando
herramientas simplificadas de alto nivel para acceder a un objeto
complejo.
En la programación orientada a objetos, los programas suelen ser muy
grandes y los objetos se comunican mucho entre sí. El concepto de
abstracción facilita el mantenimiento de un código de gran tamaño,
donde a lo largo del tiempo pueden surgir diferentes cambios.
La encapsulación: La encapsulación contiene toda la información
importante de un objeto dentro del mismo y solo expone la
información seleccionada al mundo exterior. Esta propiedad permite
asegurar que la información de un objeto,
La herencia: La herencia define relaciones jerárquicas entre
clases, de forma que atributos y métodos comunes puedan ser
reutilizados. Las clases principales extienden atributos y
comportamientos a las clases secundarias.
El polimorfismo: El polimorfismo consiste en diseñar objetos
para compartir comportamientos, lo que nos permite procesar objetos
de diferentes maneras. Es la capacidad de presentar la misma interfaz
para diferentes formas subyacentes o tipos de datos. El polimorfismo
permite que el mismo método ejecute diferentes comportamientos de dos
formas: anulación de método y sobrecarga de método.
Elementos de la programación orientada a
objetos.
• Objeto: Es una entidad que posee un conjunto de datos y
un conjunto de operaciones. Es un elemento individual con
entidad propia, ejemplo libro, un carro etc.
• Clases: Es la descripción de un conjunto de objetos, el cual
consta de métodos y atributos que resumen características
comunes de un conjunto de objeto. Es una descripción
abstracta.
• Atributos: Estas son las variables que conforman el objeto.
• Métodos: Son las funciones o acciones que incluyen la
definición de la clase y que procesan los atributos.
Implementación de la clase.
En la fase de implementación, una clase es un tipo o molde que sirve para
crear objetos.
La sintaxis para declarar una clase es:
[modificador] class <nombre>
{
// Campos de la clase
// Métodos de la clase
}
• Modificadores de acceso:
Los modificadores de acceso sirven para restringir el acceso a los
campos o a los métodos de una clase.
Los principales modificadores de acceso son:
• private
• protected
• public
• El modificador private permite que el campo o método sólo pueda ser
accedido dentro de la clase donde fue declarado.
•
• El modificador protected permite que el campo o método sólo pueda
ser accedido dentro de la clase donde fue declarado y en todas las
clases derivadas de ella.
•
• El modificador public permite que el campo o método pueda ser
accedido desde cualquier clase.
• Encapsulamiento de la clase:
La clase se encapsula encerrando entre un par de llaves los
campos y los métodos de la clase.
• Método como elemento de comunicación:
Para que los objetos de un sistema trabajen coordinadamente
necesitan comunicarse.
La comunicación entre objetos se lleva a cabo a través del envío
y/o recepción de mensajes. La comunicación se establece a
través de los métodos.
• Parámetros de salida:
Un método puede regresar un sólo valor por medio de la
instrucción return.
Los parámetros de salida son útiles cuando se requiere que
un método regrese más de un valor.
Los parámetros de salida se declaran utilizando el
modificador out.
Los parámetros de salida funcionan como los parámetros
referencia, sólo que el objeto referenciado no necesita
estar inicializado.
• El constructor:
El constructor es un método especial que sirve para inicializar el
estado de un objeto.
El destructor:
El método destructor sirve para liberar el espacio de memoria
que se asignó a un objeto de una clase.
Diagrama de clases UML.
Un diagrama de clase es un tipo de diagrama UML que describe un
sistema visualizando los diferentes tipos de objetos dentro de un
sistema y los tipos de relaciones estáticas que existen entre ellos.
El diagrama de clases es un diagrama puramente orientado al
modelo de programación orientado a objetos, ya que define las
clases que se utilizarán cuando se pase a la fase de construcción y la
manera en que se relacionan las mismas.
El diagrama UML está formado por elementos clases,
relaciones e interfaces.
Las clases son el elemento principal del diagrama y representa,
como su nombre indica, una clase dentro del paradigma de la
orientación a objetos. Una clase define un grupo de objetos
que comparten características, condiciones y significado.
La clase está compuesta por el nombre de la clase, atributos y
métodos.
Los atributos y los métodos contienen los símbolos de
especificadores de acceso los cuales son:
(+) Pública. Representa que se puede acceder al atributo o función
desde cualquier lugar de la aplicación.
(-) Privada. Representa que se puede acceder al atributo o función
únicamente desde la misma clase.
(#) Protegida. Representa que el atributo o función puede ser accedida
únicamente desde la misma clase o desde las clases que hereden de ella
(clases derivadas).
Relaciones:
Una relación identifica una dependencia. Esta dependencia puede ser entre
dos o más clases (más común) o una clase hacía sí misma (menos común,
pero existen), este último tipo de dependencia se denomina dependencia
reflexiva. Las relaciones se representan con una línea que une las clases, esta
línea variará dependiendo del tipo de relación.
Tipos de relaciones
Un diagrama de clases incluye los siguientes tipos de relaciones:
Asociación.
Agregación.
Composición.
Dependencia.
Herencia.
Asociación
Este tipo de relación es el más común y se utiliza para representar dependencia semántica. Se
representa con una simple línea continua que une las clases que están incluidas en la
asociación.
Agregación
Es una representación jerárquica que indica a un objeto y las partes
que componen ese objeto. Es decir, representa relaciones en las
que un objeto es parte de otro, pero aun así debe tener existencia
en sí mismo.
Se representa con una línea que tiene un rombo en la parte de la
clase que es una agregación de la otra clase (es decir, en la clase que
contiene las otras).
Composición
La composición es similar a la agregación, representa una relación
jerárquica entre un objeto y las partes que lo componen, pero de
una forma más fuerte. En este caso, los elementos que forman parte
no tienen sentido de existencia cuando el primero no existe. Es decir,
cuando el elemento que contiene los otros desaparece, deben
desaparecer todos ya que no tienen sentido por sí mismos sino que
dependen del elemento que componen.
Se representa con una línea continua con un rombo relleno en la clase
que es compuesta.
Dependencia
Se utiliza este tipo de relación para representar que una clase
requiere de otra para ofrecer sus funcionalidades. Es muy sencilla
y se representa con una flecha discontinua que va desde la clase que
necesita la utilidad de la otra flecha hasta esta misma.
Herencia
Otra relación muy común en el diagrama de clases es la herencia.
Este tipo de relaciones permiten que una clase (clase hija o
subclase) reciba los atributos y métodos de otra clase (clase
padre o superclase). Estos atributos y métodos recibidos se suman a
los que la clase tiene por sí misma. Se utiliza en relaciones «es un».
Para poder comprender este diagrama de clases, en esta
gráfica explicaremos las clases que representan cada bloque, sus
atributos, las metodologías implementadas y el nivel de accesibilidad que
los elementos de las clases tienen, desglosándolos de las siguientes
maneras:
Atributos y metodologías
Los atributos y las metodologías implementadas se describen en forma
de lista o de ítems, detallando cada descripción una debajo de la otra.
Los atributos se describen en la sección media de manera muy concreta y
en la sección inferior las metodologías, en la cual en este caso las clases
utilizan como método para acceder al material un sistema de reservación y
entrega.
Visibilidad
La visibilidad representa los atributos y metodologías que pueden tener
en común las clases o simplemente ser condiciones propias de cada
clase.
Cuando una condición es propia de cada clase, dicho ítem se representa
con el signo negativo que representa que este es privado y condiciones
que se tienen en común con otras clases se representan con el signo
positivo, simbolizando que es público.
En el caso de las fechas para reservar y entregar el libro o revista es una
información que se comparte en diferentes clases, por eso se representa
con el signo positivo.
En este mismo contexto, la información personal de cada lector es única y
no se comparte con más clases a acepción del tipo de lector, pues en este
caso las clases que representan al estudiante o el docente son subclases,
lo que hace innecesario repartir los datos de identificación, ya que estas
subclases heredan los datos de la clase principal.
Además de los elementos internos de cada clase también se encuentran
elementos externos que permiten comprender las relaciones que existen
entra diferentes clases, para comprender dichos factores externos veamos
al siguiente ejemplo.