Download Programación orientada a objetos

Document related concepts

Polimorfismo (informática) wikipedia , lookup

Scala (lenguaje de programación) wikipedia , lookup

Visitor (patrón de diseño) wikipedia , lookup

Common Lisp wikipedia , lookup

J (lenguaje de programación) wikipedia , lookup

Transcript
Programación orientada a objetos
La programación orientada a objetos es un paradigma
de la programación, es una forma de programar
moderna ampliamente utilizada en el mundo y con
muchas ventajas. Es una técnica cuyo soporte principal
es el objeto.
•
•
•
•
Facilidad para mantenimiento.
Facilidad de modificación.
Reusabilidad.
Fiabilidad.
Objeto
Un objeto es una abstracción de la realidad que tiene un
significado concreto y claro para el problema que se está
modelando.
- Identidad Cada objeto tiene una identidad única,
incluso si su estado es idéntico al de otro objeto
- Comportamiento representa la definición del
comportamiento del objeto, las acciones que éste
puede realizar.
- Estado representa la definición de atributos internos
del objeto, sus características.
Ejemplos de objetos
Elementos de la Poo
Abstracción: El proceso de abstracción permite
seleccionar las características relevantes dentro de
un
conjunto
de
objetos
e
identificar
comportamientos comunes para definir nuevos
tipos de entidades en el mundo real.
Encapsulación: Es el proceso de agrupar datos y
operaciones relacionadas bajo la misma unidad de
programación. En el caso de que los objetos posean
las mismas características y comportamiento se
agrupan en clases (unidades o módulos de
programación que encapsulan datos y operaciones).
Elementos de la Poo: Abstracción
Cámara de seguridad: colgada en la pared,
capta quien entra y quien sale de una
residencia, bar, hotel, etc.
Cámara digital: para utilizarlas con las
manos, capturar imágenes con la
familia, amigos, etc.
Cámara de tv: utilizarlas con las manos
y/o una base, para grabar programas
de tv.
Elementos de la Poo: Encapsulación
Camara
-marca
-Modelo
-serial
+encender()
+apagar()
+tomarFoto()
+grabar()
Modificadores de acceso:
Privados: pueden ser accedidos solo
desde la misma clase, se representan
con el signo: Públicos: pueden accedidos desde el
exterior, desde otras clases, se
representan con el signo: +
Protegidos: pueden ser accedidos
desde las subclases, se representan
con el signo: #
Elementos de la Poo
Herencia: Es una relación entre
clases en la cual una clase comparte
la estructura y comportamiento
definido en otra clase.
• Cada clase que hereda de otra
posee:
– Los atributos de la clase base
además de los propios
– Soporta todos o algunos de los
métodos de la clase base
• Una subclase hereda de una clase
base
Clase Base
Transporte
-pasajeros
+Avanzar()
+Detenerse()
Automóvil
Avión
Clases Derivadas o
subclases
Elementos de la Poo
Polimorfismo: cuando varios objetos de distintas
clases pueden responder al mismo mensaje
(método), aun realizando cosas distintas se
denomina polimorfismo.
• La definición del método reside en la clase base
• La implementación del método reside en la clase
derivada
• La invocación es resuelta al momento de
ejecución
Elementos de la Poo: Polimorfismo
Animal
Peso
Tamano
Mover()
Morder()
Pez
Pollo
Peso
Peso
Tamano
Tamano
Mover()
Mover()
Morder()
Morder()
Elementos de la Poo: Polimorfismo
ElementoCasero
Peso
Color
LanzarPared()
Lenguajes orientados a objetos
El primer lenguaje de programación que introdujo el
concepto de clase fue Simula 67, introdujo el concepto
de herencia.
Durante la década del 80 aparecen algunos lenguajes
de programación con soporte para orientación a
objetos:
Smalltalk 80, Eiffel, C++, Objetive C, Object Pascal,
Clipper 5-2
Clasificación de los lenguajes OO
1 Lenguajes orientados a objetos puros: Soportan
en su totalidad el paradigma orientado a objetos,
los datos numéricos, lógicos y cadena son tomados
como referencias y objetos . como : Smallalk, Eiffel,
Simula.
2 Lenguajes orientados a objetos híbridos: Soportan
en su totalidad el paradigma orientado a objetos
sobre un lenguaje hibrido: C++, Object Cobol,
Object Pascal.
Memoria Ram
referencias
Clases
Objetos
Operacion
Creación del objeto: a y b
5
25
8
64
Operacion
X: numerico
Z: numerico
Tomar(k: numerico)
Cuadrado(j: numerico)
Orientación a objetos
pura
Beneficios de la Poo
1 reutilización. Las clases se construyen a partir de
otras
2. Sistemas mas fiables
3. Proceso de desarrollo mas rápido
4. Desarrollo mas flexible
5. Modelos que reflejan mejor la realidad
6.Mejor independencia e interoperatividad de la
tecnología
7. Mejor informática distribuida y cliente-servidor
8. Bibliotecas de clases comerciales disponibles
Modularidad
La modularización es el proceso de dividir un
programa en módulos que se pueden compilar
separadamente, pero que tienen conexiones con
otros módulos.
En consecuencia la modularidad es la posibilidad de
subdividir una aplicación en piezas mas pequeñas,
cada una de las cuales debe ser tan independiente
como sea posible, considerando la aplicación como
un todo.
Modularidad
En C++ los módulos son archivos compilados
separadamente aunque la representación ideal es
en C++ es la clase.
La practica tradicional en C/C++ es situar interfaces
del modulo en archivos del modulo en archivos
cuyos nombres contienen el sufijo .h (archivos de
cabecera), las implementaciones del modulo se
sitúan en un archivo cuyo nombre tiene el sufijo .c.
Modularidad
Todos los módulos deben seguir el principio de
ocultación de la información.
Un criterio formulado por Bertrand Meyer es el
principio de que los módulos deben ser abiertos y
cerrados al mismo tiempo.
Cerrado: terminado, en consecuencia útil o activo
desde dentro de otros módulos.
Abiertos: poder ser sometido a cambios y
modificaciones