Este documento presenta los conceptos básicos de la Programación Orientada a Objetos (POO) como clases, objetos, atributos, métodos, herencia, polimorfismo y encapsulamiento. Explica que una clase define el tipo de un objeto y que un objeto es una instancia de una clase. También cubre temas como paso de mensajes entre objetos, constructores, destructores y ofrece un ejemplo en C# para ilustrar estos conceptos. Al final anima a los asistentes a resolver dudas.
2. Objetivos de la charla.
I.
Introducción
II.
Conceptos básicos (Clase, objeto, paso de
III.
mensajes)
Características de la POO ( Herencia, sobrecarga,
IV.
polimorfismo )
Conceptos necesarios de C# ( Constructor,
V.
destructor de basura)
Ejemplo en C#.
VI.
3. Adquirir unos conocimientos básicos de lo que
I.
es la PROGRAMACIÓN ORIENTADA A OBJETOS.
Animar a estudiar esta metodología quitando
II.
miedos.
Resolver dudas a los que están empezando.
III.
4. Los principales objetivos de la POO son:
1. Aumentar la abstracción de los programas para
una mejor comprensión.
2. Modularización de componentes.
3. Reducir la redundancia de código.
4. Reducir los tiempos de implementación.
5. Aumentar la fiabilidad mediante la reutilización
de componentes.
5. La Programación Orientada a Objetos (POO u OOP según siglas
en inglés) es un paradigma de programación que define los
programas en términos de quot;clases de objetosquot;, objetos que son
entidades que combinan estado (es decir, datos),
comportamiento (esto es, procedimientos o métodos) e identidad
(propiedad del objeto que lo diferencia del resto). La
programación orientada a objetos expresa un programa como un
conjunto de estos objetos, que colaboran entre ellos para realizar
tareas.
6. Una clase es un tipo de Datos con:
Una serie de características, denominadas ATRIBUTOS.
Un comportamiento definido mediante MÉTODOS.
Haciendo un símil con C podríamos establecer una similitud
entre:
variables atributos
funciones métodos
7. ¿Podemos describir a una persona como una clase?
Atributos : Métodos :
Color de pelo. Hablar();
Color de ojos. Comer();
Altura. Beber();
Peso. Andar();
Correr();
8. ¿Qué es un objeto?
Un objeto es la materialización (instanciación)de una clase.
Por tanto, podemos decir que una clase es como una
plantilla a partir de la cual se crean objetos.
Los objetos son las unidades atómicas de los programas.
9. Un objeto de persona Alba “se crea” (se
instancia) a partir de la idea de persona (la clase)
Empieza a:
Ocupar espacio en el mundo.
Realizar ciertas funciones como respirar o comer.
Tiene los ojos marrones, es rubia, mide 80 cm,
pesa 3,2 kg…
10. Una referencia contiene sólo la dirección de memoria en la
que el objeto se encuentra almacenado.
Similitud con los punteros de C.
Persona Pepe, Juan;
Pepe==Juan; //SOLO TRUE SI Pepe Y Juan APUNTAN AL
MISMO OBJETO
Pepe = Juan; //Hace que Pepe apunte a Juan, NO COPIA Juan
en Pepe.
11. Los objetos se comunican por el llamado PASO DE MENSAJES, en
una relación que se denomina CLIENTELA (equivalente a la
relación contiene).
El Paso de mensajes se efectúa mediante el uso de las llamadas
referencias.
Ejemplo:
Alba Habla.
Persona Alba= new Persona(); //Instanciación de la clase
Alba.dice(“HOLA”); // Enviamos un mensaje al objeto señalado por
// Alba para que diga Hola
12. En una clase no DEBE HABER acceso directo a todos
los atributos y métodos del objeto, sino que este
acceso se realiza a través de ciertos métodos de
visibilidad pública.
Diferenciación entre la funcionalidad que la clase ofrece
al mundo externo a través de su interfaz (métodos y
atributos públicos) y la funcionalidad interna de la
misma (métodos y atributos privados).
13. Existen básicamente 3 tipos de visibilidad para atributos y
métodos:
PUBLICO: Accesible por todos.
PROTEGIDO: Accesible sólo por objetos de la clase en
cuestión y por objetos de clases derivadas.
PRIVADO: Accesible sólo por objetos de la misma clase.
14. Uno de los objetivos que se persigue con la POO es la
obtención de código reutilizable.
Para ello debe crearse código genérico, aplicable a tantas
situaciones como sea posible.
La clave para la creación de código reutilizable reside en la
ABSTRACCION.
Mediante la HERENCIA es posible extender la funcionalidad
de este código genérico para adaptarla a situaciones
específicas, reescribiendo partes del código del mismo o
añadiendo funcionalidad.
Dos tipos de herencia: simple y múltiple.
15. Una clase derivada hereda todos los miembros de la clase
base y puede acceder a los miembros públicos (public) y
protegidos (protected) de la clase o clases base, como si
fueran miembros de ella misma.
Una clase derivada no tiene acceso a los miembros privados
(private) de la clase base.
16.
17. Dialoga Dialoga
Como cualquier
Ej. de público persona
Ordenar Ordenar
El lo hace de otra
Ej. de público forma
Persona Informático
Respira Ej. de
Programa
protegido
Tiempo libre Respira
Como cualquier
Ej. de privado otra persona
18. Una misma referencia puede apuntar a objetos de diferentes
tipos con una raíz común. El tipo específico se determina en
tiempo de ejecución.
TIPADO DINÁMICO.
19.
20. Un método se dice sobrecargado si existen varias versiones del
mismo, ofreciendo todas una misma funcionalidad pero
variando el número de parámetros.
Ejemplo Una persona come, pero según le des cubiertos
o le des palillos come de una forma o de otra. Es decir, nuestra
persona tiene dos formas de comer (métodos) pero según le
demos unas herramientas u otras (parámetros) esta elige.
21. Constructor.- Es un método especial de una clase
que es llamado automáticamente siempre que se
crea un objeto de la misma. Su misión es iniciar
los valores de los atributos.
Recolector de basura.- Es un mecanismo de
limpieza de memoria. Cuando un objeto deja de
ser referenciado, este libera la memoria.
22. Ahora es un buen momento para resolver dudas.
No las dejéis para más tarde porque las dudas es
mejor resolverlas en el momento.
23. Vamos a ver una implementación en C# del
ejemplo de las personas. Os recomendamos :
Seguirlo con atención.
Pararnos cuando tengáis una duda.
Intentarlo hacer vosotros también.
Y recordar que toda la información de la charla
esta disponible en la página del club:
http://www.clubnetalmeria.com/