0% encontró este documento útil (0 votos)
104 vistas50 páginas

Programación Orientada A Objetos

La programación orientada a objetos es un paradigma de programación que organiza los programas a imagen de los objetos del mundo real. Este paradigma utiliza conceptos como clases, objetos, atributos, métodos, herencia, polimorfismo y encapsulamiento.

Cargado por

MIRLA
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PPTX, PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
104 vistas50 páginas

Programación Orientada A Objetos

La programación orientada a objetos es un paradigma de programación que organiza los programas a imagen de los objetos del mundo real. Este paradigma utiliza conceptos como clases, objetos, atributos, métodos, herencia, polimorfismo y encapsulamiento.

Cargado por

MIRLA
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PPTX, PDF, TXT o lee en línea desde Scribd
Está en la página 1/ 50

 Es un modelo de Programación más abstracto

 Pretende organizar los programas a imagen y


semejanza de la organización de los objetos
del mundo real
 Contiene información de los objetos + las
acciones que se pueden realizar con ellos
◦ Objeto = Atributos(Datos) + Métodos(Operaciones)

 Pueden crearse varios objetos del mismo


“tipo” a partir de modelos (Clases)
• En término de programación es un tipo de
dato definido por el usuario. Equivalente a
un TDA. Ej: Rectangulo, Lista, Cola,
NumeroComplejo, etc.

• Las clases son las plantillas a partir de las


cuales se crean los objetos.
 Una clase describe un conjunto de ejemplares
con propiedades y comportamientos
similares.

 Una clase se describe por:


 Nombre
 Atributos (datos)
 Interfaz (métodos, mensajes)
 Valores o características de los objetos

 Permiten definir el estado del objeto u otras


cualidades

 Contenedor de un tipo de dato asociado a un


objeto (o a una clase de objetos), que hace
los datos visibles desde afuera del objeto, y
cuyo valor puede ser alterado por la ejecución
de algún método
 La interfase es el medio de comunicación
entre objetos.

 La interfase de un objeto está conformada


por los métodos y los mensajes.

 Los objetos deben definir las interfases de


todos los servicios que desean prestar.
 Acciones que puede realizar un objeto

 Desde el punto de vista del comportamiento,


es lo que el objeto puede hacer.

 Un método puede producir un cambio en las


propiedades del objeto o la generación de un
“evento” con un nuevo mensaje para otro
objeto del sistema.
 Una comunicación dirigida a un objeto, que le
ordena que ejecute uno de sus métodos con
ciertos parámetros asociados al evento que lo
generó

 Los objetos se comunican e interaccionen entre


sí por medio de mensajes

 Si un objeto desea que otro objeto haga algo le


envía un mensaje que puede tener información
adicional en forma de parámetros
 Cuando un objeto recibe un mensaje
ejecutará un método u operación

 Componentes de un mensaje
◦ Objeto destinatario del mensaje (miCoche)

◦ Método que se debe ejecutar como respuesta


(cambiarmarcha)

◦ Parámetros necesarios del método (segunda)


Clase Bicicleta

Atributos

Tamaño de frame
Tamaño de llanta
Material ...
Abstraídos en

Métodos

Cambio
Mover
Frenar...

Objetos bicicletas
 En términos de programación es una variable.

 Un objeto es una instancia de una clase.

 Los objetos creados a partir de una clase,


tienen una estructura idéntica, pero cada
objeto puede tener valores distintos.

 Es una entidad que muestra algún


comportamiento bien definido.
 Un objeto es una abstracción de un conjunto de
cosas del mundo real de tal forma que:

◦ Todos los elementos del conjunto (las instancias) tienen


las mismas características.

◦ Todas las instancias están sujetas a y conforman las


mismas reglas.

 Posee funcionalidad (operaciones que son


capaces de hacer y mensajes que son capaces de
responder).
 Las características más importantes son:

◦ Abstracción
◦ Identidad
◦ Clasificación
◦ Herencia
◦ Encapsulamiento
◦ Polimorfismo

Estas características pueden ser usadas en forma


independiente, pero juntas se complementan.
Permite seleccionar las características
relevantes dentro de un conjunto e identificar
comportamientos comunes para definir
nuevas entidades u objetos.

Es clave en el proceso de análisis y diseño


orientado a objetos.

Permite armar un conjunto de clases que


permite modelar la realidad o el problema
que se quiere resolver
Cada objeto tiene su propia identidad inherente
 Es un mecanismo para compartir atributos y
métodos entre clases.

 Permite definir una clase hija (subclase) a


partir de una clase padre (base, superclase).

 Las subclases heredan los atributos y


métodos de las superclases.
 Por la herencia se forman jerarquías de clases
(superclases y subclases).

 La clase hija hereda el interfaz (con la


implementación de las operaciones) y los
atributos.

 Relación “es un”

 Permite la reutilización de código.


 Concepto de tipo: un tipo denota una
interfase particular. Ej.: Ser, Animal, Vegetal,
etc.

 Un tipo es un subtipo de otro si su interfaz


contiene la interfase de su supertipo. Ej.:
Animal es un subtipo de Ser y un supertipo
de Ave y Mamifero.
 Diferencia entre los conceptos de clase e
interfase.

◦ El concepto de clase hace referencia a los atributos


y a las operaciones, junto con su implementación.

◦ El concepto de interfase hace referencia sólo a los


prototipos de las operaciones visibles.
 Herencia de Implementación: la clase hija
hereda la implementación de métodos de la
clase padre.

 Herencia de interfase: la clase hija hereda el


interfase, pero no con la implementación de
las operaciones.

 Herencia de clase: combina la herencia de


implementación y de interfase.
 Simple: una clase (clase hija) puede heredar
de otra clase (una clase padre).

 Múltiple: una clase (clase hija) puede heredar


de otras clases padres (tener varias clases
padres).
◦ No está disponible en todos los lenguajes
(disponible en C++; en Java sólo para la herencia
de interfase).
Problema de ambigüedad: unVehiculoAnfibio.Desplazarse();

Los lenguajes ofrecen mecanismos para deshacer la ambigüedad


(en C++ => unVehiculoAnfibio.VehiculoTerrestre::Desplazarse()).
 Significa que la misma operación puede
comportarse diferente en clases distintas.

 El polimorfismo está muy ligado a la


herencia.

 Distintas instancias del mismo tipo


interpretan el mismo mensaje en diferentes
formas.
 El polimorfismo requiere enlace dinámico

◦ Enlace dinámico: la llamada se resuelve en tiempo


de ejecución.

◦ Enlace estático: la llamada se resuelve en tiempo de


compilación
 Concepto de caja negra

 Es la propiedad que tienen los objetos, de


contener tanto datos como métodos, los
cuales pueden manipular o cambiar estos
datos.

 Consiste en separar los aspectos externos de


un objeto (que pueden ser accedidos desde
otros objetos) de los detalles internos de
implementación del mismo.
 Es importante porque mediante esta
propiedad, los objetos, tienen el control
necesario, de la integridad de los datos
contenidos en este.

 Los aspectos internos de un objeto son


transparentes a otros, de otros objetos.

 Facilidad de mantenimiento y depuración de


los programas.
 Los clientes de una clase sólo conocen la
interfaz de la misma, es decir, conocen los
prototipos de las operaciones pero no cómo
están implementadas.

 Por tanto, si la implementación de una clase


varía, y la interfaz continúa siendo la misma,
no es necesario cambiar el código de los
clientes.
 Un constructor es un método especial que
tiene el mismo nombre de la clase.

 Los constructores pueden tomar argumentos


pero no retornan ningún valor.
 Es llamado automáticamente cuando un
objeto de una clase es creado.

 Se encarga de inicializar las variables del


objeto.

 Se puede tener más de un constructor en una


clase.
 Es una relación de herencia.

 La clase hija puede extender o redefinir


(override) el comportamiento de la clase
padre.

 El Method Overriding (sobremontado de


método) permite implementar un mismo
método de una superclase, en una subclase.
 Hay dos clases de overriding:

◦ Redefinición: Se reemplaza el método de la


superclase totalmente.

◦ Extensión: Se aumenta el método original con un


comportamiento adicional.
 El Method Overloading (sobrecarga de
método) permite implementar polimorfismo.

 En una clase se puede definir dos o más


métodos con el mismo nombre, pero que
reciben diferentes parámetros (cantidad y/o
tipo). Estos métodos son overloading.
 La reutilización del software:

◦ Esta ahorra tiempo en el desarrollo de programas.

◦ Se utiliza software que ya ha sido probado.

 Fácil mantenimiento y depuración de


programas.
 Extensibilidad: posibilidad de ampliar la
funcionalidad de la aplicación de manera
sencilla.

 Modularidad y encapsulación: el sistema se


descompone en objetos con unas
responsabilidades claramente especificadas.
 Son los que proporcionan los mecanismos
para estructurar el código de acuerdo a las
características de la POO.
 Algunos lenguajes:
◦ C++
◦ Java
◦ C#
◦ Visual Basic NET
◦ Etc.

También podría gustarte