PROGRAMACIÓN ORIENTADA A OBJETOS
UNIDAD II
La programación orientada a objetos o POO (OOP
según sus siglas en inglés) es un paradigma de
programación que usa objetos y sus interacciones,
para diseñar aplicaciones y programas
informáticos.
A diferencia de la programación estructurada la
POO trata de amoldarse al modo de pensar del
hombre y no a la de la máquina.
Programación Orientada a Objetos
Introducción (1/3)
• Paradigmas de programación clásicos:
•Programación imperativa
(estructurada y poo, Ej.Pascal,
basic, c++, C#,Java, Object
Pascal, python, etc)
•Programación declarativa
(funcional y lógica. Ej. LISP y
Prolog)
Introducción (2/3)
¿Por qué la POO?
•La programación estructurada fue impulsada principalmente
por Pascal y C. Utilizando este enfoque un programa cumple
su objetivo haciendo uso de subrutinas (procedimientos,
funciones) y estructuras de control.
Inconvenientes:
•A medida que los programas se hicieron mas avanzados se
fueran tornando mas complicados y difíciles de mantener.
Introducción (3/3)
¿Por qué la POO?
Esta situación disparo la búsqueda de un nuevo enfoque,
más rápido, correcto y económico, lo que resulto en el
paradigma de Programación Orientada a Objetos (POO)
•Comienza con lenguajes
Simula 64 y 67
SmallTalk
Eiffel
C++, entre otros …
Principales Lenguajes OO
Simula
Smalltalk
Object Pascal
Eiffel
C++
Nuevas plataformas y lenguajes la están adoptando…
Java
C#
Python
Simula
• Simula I (1964) y Simula 67 (1967), desarrollados en el
Centro de Computación de Noruega por Ole-Johan Dahl y
Kristen Nygaard, son los dos primeros lenguajes
orientados a objetos.
Influenciado por Algol 60.
Simula 67 introdujo los principales conceptos de OOP:
clases, objetos, encapsulamiento, herencia simple,
sobrecarga (overriding) de métodos, y recuperación de
memoria disponible (garbage collection)
Smalltalk
• Smalltalk (1972) fue desarrollado en Xerox PARC por Alan
Kay, Dan Ingalls y Adele Goldberg.
Influenciado por Simula y Lisp.
Lenguaje orientado a objetos puro.
Soporta clases, metaclases, encapsulación, herencia
simple, polimorfismo, garbage collection
En Smalltalk, todo es un objeto y cada objeto pertenece a
una clase.
C++
• C++ (1983) fue desarrollado en Bell Laboratories por Bjarne
Stroustrup.
Influenciado por C y Simula.
Lenguaje orientado a objetos híbrido, compatible con C.
Soporta clases, encapsulación, sobrecarga de funciones y
operadores, herencia múltiple, polimorfismo,
clases/funciones parametrizadas (genéricas).
Eiffel
• Eiffel (1986) fue desarrollado por Bertrand Meyer.
Influenciado por Smalltalk y ADA.
Provee soporte para “Diseño por Contrato”: invariantes,
pre-condiciones y postcondiciones.
Soporta clases, encapsulación, sobrecarga de
operadores, herencia múltiple, polimorfismo, clases
parametrizadas (genéricas), garbage collection.
Java
• Java (1995) fue desarrollado en Sun Microsystems
por James Gosling, Bill Joy y Guy Steele.
Influenciado por C++.
Java es un lenguaje orientado a objetos más puro
que C++ y menos puro que Smalltalk.
Soporta clases, encapsulación, herencia simple,
polimorfismo, interfaces, garbage collection.
C#
• C# (2000) fue creado en Microsoft por Anders Hejlsberg.
Influenciado por Java: objetos manejados mediante
referencias, herencia simple e interfaces, garbage
collection; y C++ (sobrecarga de operadores).
Novedades: propiedades, eventos, delegados.
Permite crear código intermedio que corre en el Common
Language Runtime (CLR), en .NET
¿Qué es un Objeto? (1/2)
• En POO, informalmente, un objeto representa una entidad del mundo
real.
• Entidades Físicas
(Ej.: Vehículo, Casa, Producto)
• Entidades Conceptuales
 (Ej.: Proceso Químico, Transacción Bancaria)
• Entidades de Software
 (Ej.: Lista Enlazada, Interfaz Gráfica)
Definición Formal de Objeto (Rumbaugh):
“Un objeto es un concepto, abstracción o cosa con un significado y límites claros
en el problema en cuestión”
¿Qué es un Objeto? (2/2)
• Como entidades del mundo real, los diferentes objetos...
Se pueden clasificar en tipos
Poseen identidad propia
Poseen características
Poseen comportamiento
Características de los objetos
Todas los objetos tienen una serie de características en común
que permiten definir las características especificas de cada
uno de ellos.
Por ejemplo, Podríamos utilizar como características que
definen al objeto vehículo las siguientes: color, marca y
modelo.
Al diseñar y programa los objetos y sus clases, esas
características se van a denominar atributos o propiedades de
del objeto.
Comportamiento de los objetos
• Se refiere a una interfaz o un método de comunicación con
tales objetos:
Podemos acelerar el auto, encender el televisor, vaciar el
basurero, cerrar la cortina, operar el microondas, etc.
• El origen del nombre "métodos" (para las funciones) viene de
esta idea: los métodos son la manera de comunicación,
interacción y manipulación con los objetos.
La POO en Java
• Para crear objetos en Java se requiere primero, como en todos
los lenguajes de programación orientados a objetos, de una
clase, la cual tiene:
Un tipo
Características (Atributos o propiedades)
Comportamiento (Métodos)
Una clase es una descripción de un grupo de objetos (plantilla o
molde)
Clases
• Una clase es una definición abstracta (plantilla o molde) de
un objeto:
Define la estructura y el comportamiento compartidos
por los objetos.
Sirve como modelo para la creación de objetos.
Ejemplo de una Clase
Abstracción
• Clase: Auto
• Características (Atributos)
 Marca
 Modelo
 Año
 Comportamiento (Métodos)
 Encender
 Apagar
 Avanzar
 Frenar
class Auto
{
string Marca;
string Modelo;
Int Año;
void Encender()
{
}
void Apagar()
{
}
void Avanzar()
{
}
void Frenar()
{
Objetos (Instancias)
• Un Objeto o Instancia es una ocurrencia o un
representante de una clase en un programa. Es
una variable del tipo de una clase.
Clases Objetos
Persona Juan
Perro Samira
Producto Chocolate
Computador Dell
Fracción F
Stack S
Atributos
• Son aquellas características que se asocian a un tipo de
objeto (clase).
 Nombre
 Edad
 Matrícula
 Dirección
 Los atributos que se asocian a una clase,
dependen en gran medida del uso que se le dará
dentro del sistema que se diseña actualmente,
pero también pueden ser definidos pensando en
futuras implementaciones.
Métodos
• Representan todas aquellas acciones(comportamiento)
que puede realizar un objeto de una clase.
• La clase Perro puede tener los métodos:
Correr,
Comer,
Bañar,
Ladrar
• En la implementación, estos métodos son segmentos de
código similares a los procedimientos y funciones
utilizadas en la programación estructurada.
Creación de objetos en Java
FORMA 1:
Auto c=new Auto();
c.Marca=”Ford”;
c.Avanzar(); //Llamar un método del objeto
FORMA 2:
Auto c;
c= new Auto();
c.Marca = “Ford”;
c.Avanzar(); //Llamar un método del objeto
Ejercicios 2.1 de Classroom
Principios de la POO
Existen una serie de principios fundamentales para
comprender cómo se modeliza la realidad al crear un
programa bajo el paradigma de la orientación a objetos.
Estos principios son:
Abstracción
Encapsulamiento
Modularidad
Jerarquía
Paso de mensajes
Abstracción
Se define como la capacidad
para examinar algo sin
preocuparse de sus detalles
internos.
Existen dos tipos de abstracciones: abstracción
de datos y abstracción funcional
Abstracción de datos
• Consiste en utilizar los datos sin preocuparse por los
detalles de su implementación, es decir, lo importante es
saber que tipo de información se puede utilizar y no como
está almacenado.
• Que Atributo o propiedad
• Como Campo
27
Abstracción funcional
• Consiste en saber que es lo que hace un determinado
proceso, pero no como lo hace.
• Por ejemplo el proceso Ordenar de la clase Vector,
sabemos que el método ordenará los elementos del
vector, pero no nos interesa como lo hará.
• Que  método
• Como  algoritmo
28
Encapsulamiento
Al definir una clase estamos encapsulando los atributos y
los métodos.
En una clase, el encapsulamiento permite ocultar
detalles de implementación.
29
Encapsulamiento
 Toda clase tiene una serie de atributos y
métodos asociados a ella. Todos ellos están
encapsulados o contenidos dentro de la misma.
Sabemos que hacen, pero no necesariamente
como.
Abstracción y Encapsulamiento
• La abstracción y el encapsulamiento son conceptos
complementarios
• La abstracción se enfoca a la vista exterior de un objeto
• El encapsulamiento previene a otros objetos ver su
interior, donde el comportamiento de la abstracción se ha
realizado.
31
Modularidad
Mediante la modularidad, se propone al programador
dividir su aplicación en varios módulos diferentes (ya sea
en forma de clases, paquetes o bibliotecas), cada uno de
ellos con un sentido propio.
Esta fragmentación disminuye el grado de dificultad del
problema al que da respuesta el programa, pues se
afronta el problema como un conjunto de problemas de
menor dificultad, además de facilitar la comprensión del
programa.
Jerarquía
Es cualquier clasificación u ordenación de abstracciones en una
estructura de árbol. Algunos tipos de jerarquías son: Jerarquía de
herencia, jerarquía de especialización y jerarquía de agregación.
Paso de mensajes
Mediante el denominado paso de mensajes, un objeto puede
solicitar de otro objeto que realice una acción determinada o que
modifique su estado. El paso de mensajes se suele implementar
como llamadas a los métodos de otros objetos. Es el paso de
mensajes el que permite la interacción entre los diferentes
objetos en un programa que utiliza este paradigma.
Desde el punto de vista de la programación estructurada, esto
correspondería con la llamada a funciones o procedimientos.
Elementos de la POO
1 Constructores y destructores
2 Visibilidad
3 Sobrecarga
4 Herencia
5 Polimorfismo
6 Interfaces
Constructores y destructores
• Los constructores son métodos que sirven
para construir, crear o inicializar un objeto o
instancia de una clase.
• NO tienen un valor de retorno (ni siquiera
void).
• Se deben llamar IGUAL que la clase.
• Si no se especifica, Java proporciona
automáticamente un constructor (vacío) para
la clase.
•Su función principal es llevar a cabo
Constructores y destructores
• Un constructor puede tener parámetros, que son
usados para inicializar algunas variables en el
objeto.
Ejemplo:
class CuentaBanco{
int numCuenta, saldo;
CuentaBanco(int n, int s){
numCuenta=n;
saldo=s;
}
Constructores y destructores
• Son invocados con el operador new durante la
creación de un objeto.
• Por ejemplo, el constructor CuentaBanco puede
ser definido con dos parámetros que indican su
balance inicial:
miCuenta= new CuentaBanco(1001, 650);
Inicialización de variables en los
constructores
• Es un área perfecta para inicializar muchas
variables, ya que se ejecutará antes que
ninguna otra parte del programa.
• También es llamado función inicializadora
de variables.
class CtaCte
{
public CtaCte(){...} //Const. por default
public CtaCte(int i){...} //Const. con un parametro
}
Constructores y destructores
Un destructor es otro método de la clase
que será el último que se ejecute y tiene por
objetivo liberar espacio de campos de la
clase.
Visibilidad de métodos y atributos.
Publica
Estos métodos y atributos pueden ser vistos o
utilizados en la misma clase donde se encuentran,
en las clases que heredan de esta y en cualquier
instancia creada de la clase o de sus subclases.
Visibilidad de métodos y atributos.
Privada
Estos métodos y atributos solo pueden ser vistos o
utilizados en la misma clase donde se encuentran y
no son accesibles en las clases que heredan de
esta y ni en las instancias creadas de la clase o de
sus subclases.
Visibilidad de métodos y atributos.
Protegida
Estos métodos y atributos pueden ser vistos o
utilizados en la misma clase donde se encuentran,
en las clases que heredan de esta, pero no pueden
ser vistos ni usados en las instancias creadas de la
clase o de sus subclases.
Resumen sobre visibilidad de métodos
y atributos
AccesoModificador public private protected
Misma clase sí sí sí
Subclase sí no sí
Clase donde se usa el objeto sí no no
Paquete de ejercicios 4
Restringir la visibilidad de algunos atributos y métodos de
las clases desarrolladas en el paquete de ejercicios
anterior.
Sobrecarga (Overloading)
En programación orientada a objetos, la sobrecarga se
refiere a la posibilidad de tener dos o más funciones con
el mismo nombre pero funcionalidad diferente. Es decir,
dos o más funciones con el mismo nombre realizan
acciones diferentes. El compilador usará una u otra
dependiendo de los parámetros usados.
public void HacerDeposito(int importe)
{
}
public void HacerDeposito(int importe, bool acreditar)
{
}
Paquete de ejercicios 5
Ejercicios 2.2 de Classroom
Herencia
• Es una relación entre clases en la
cual una clase comparte la estructura
y comportamiento definido en otra
clase (Grady - Booch).
• 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.
+Avanzar()
+Detenerse()
-pasajeros
Transporte
Automóvil Avión
Clase Base, padre o
superclase
Clases Derivadas,
hijas o subclases
Herencia simple
La herencia simple es aquella en la que cada clase
derivada hereda de una única clase. En herencia simple,
cada clase tiene un solo ascendiente. Cada clase puede
tener, sin embargo, muchos descendientes.
Herencia múltiple
La herencia múltiple es aquella en la cual una clase
derivada tiene más de una clase base.
Aunque el concepto de herencia múltiple es muy útil, el
diseño de clases suele ser más complejo.
Herencia
• Una clase (clase hija) puede heredar, de otra
clase (clase padre):
Atributos y
Métodos
Empleado Cliente Alumno
Persona
Nombre
Dirección
• La herencia permite crear subclases que
heredan tanto las variables de estado como
los métodos de su superclase.
• Una subclase puede utilizar las variables y
los métodos que tiene la clase que le hereda,
sin necesidad de definirlos.
Herencia
Clase A
Clase B
Clase C
public class A
{
}
public class B extends A
{
}
public class C extends B
{
}
hereda
hereda
Herencia
Clase A
Clase B
Clase C
public class A
{
}
public class B extends A
{
}
public class C extends B
{
}
Cuando se usa
un método, lo
busca aquí
primero.
Si no encuentra
busca aquí.
Si no encontró
abajo busca
aquí.
Herencia
Ventajas de la Herencia
•Ahorra tiempo al reutilizar el código.
•Reduce errores porque se utiliza algo que ya
fue probado.
•Hace mas fácil el mantenimiento
class Cuenta //Clase Base
{
}
class CtaCte : Cuenta //Clase Derivada
{
}
Paquete de ejercicios 3
Ejercicios 3.1 de Classroom
El polimorfismo permite que una misma operación
pueda llevarse a cabo de forma diferente en clases
diferentes.
Por ejemplo, la operación mover, es distinta para
una pieza de ajedrez que para una ficha de damas,
pero ambos objetos pueden ser movidos.
Nota: La implementación específica de una
operación determinada en una clase determinada se
denomina método.
Polimorfismo
Polimorfismo
• Capacidad de que dos clases diferentes
respondan de forma distinta a un mismo
mensaje.
• Esto quiere decir que dos clases que tengan un
método con el mismo nombre, y que respondan
al mismo tipo de mensaje (es decir, que reciba
los mismo parámetros), ejecutarán acciones
distintas.
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.
Transporte
Avanzar
Frenar
Transporte
Avanzar
Frenar
Transporte
Avanzar
Transporte
Avanzar()
Frenar()
Polimorfismo
public class Transporte
{
public virtual void Avanzar()
{
Console.WriteLine("Transporte encendido");
}
}
public class Vehiculo:Transporte
{
public override void Avanzar()
{
//base.Avanzar();
Console.WriteLine("El vehiculo avanzará");
}
}
Vehiculo v2 = new Vehiculo();
v2.Avanzar();
Paquete de ejercicios 7
Ejercicios 3.2 de Classroom
Interfaces
• En programación orientada a objetos, una interfaz
(también llamada protocolo) es un medio común para que
los objetos no relacionados se comuniquen entre sí. Estas
son definiciones de métodos y valores sobre los cuales los
objetos están de acuerdo para cooperar.
• Es un recurso de diseño que permite definir
comportamiento.
• La implementación de una interfaz es un contrato que
obliga a la clase a implementar todos los métodos
definidos en la interfaz
Interfaces
Interfaces
Paquete de ejercicios 8
Ejercicios 3.3 de Classroom

POO - Elementos Generales de la Programación orientada a objetos

  • 1.
    PROGRAMACIÓN ORIENTADA AOBJETOS UNIDAD II
  • 2.
    La programación orientadaa objetos o POO (OOP según sus siglas en inglés) es un paradigma de programación que usa objetos y sus interacciones, para diseñar aplicaciones y programas informáticos. A diferencia de la programación estructurada la POO trata de amoldarse al modo de pensar del hombre y no a la de la máquina. Programación Orientada a Objetos
  • 3.
    Introducción (1/3) • Paradigmasde programación clásicos: •Programación imperativa (estructurada y poo, Ej.Pascal, basic, c++, C#,Java, Object Pascal, python, etc) •Programación declarativa (funcional y lógica. Ej. LISP y Prolog)
  • 4.
    Introducción (2/3) ¿Por quéla POO? •La programación estructurada fue impulsada principalmente por Pascal y C. Utilizando este enfoque un programa cumple su objetivo haciendo uso de subrutinas (procedimientos, funciones) y estructuras de control. Inconvenientes: •A medida que los programas se hicieron mas avanzados se fueran tornando mas complicados y difíciles de mantener.
  • 5.
    Introducción (3/3) ¿Por quéla POO? Esta situación disparo la búsqueda de un nuevo enfoque, más rápido, correcto y económico, lo que resulto en el paradigma de Programación Orientada a Objetos (POO) •Comienza con lenguajes Simula 64 y 67 SmallTalk Eiffel C++, entre otros …
  • 6.
    Principales Lenguajes OO Simula Smalltalk ObjectPascal Eiffel C++ Nuevas plataformas y lenguajes la están adoptando… Java C# Python
  • 7.
    Simula • Simula I(1964) y Simula 67 (1967), desarrollados en el Centro de Computación de Noruega por Ole-Johan Dahl y Kristen Nygaard, son los dos primeros lenguajes orientados a objetos. Influenciado por Algol 60. Simula 67 introdujo los principales conceptos de OOP: clases, objetos, encapsulamiento, herencia simple, sobrecarga (overriding) de métodos, y recuperación de memoria disponible (garbage collection)
  • 8.
    Smalltalk • Smalltalk (1972)fue desarrollado en Xerox PARC por Alan Kay, Dan Ingalls y Adele Goldberg. Influenciado por Simula y Lisp. Lenguaje orientado a objetos puro. Soporta clases, metaclases, encapsulación, herencia simple, polimorfismo, garbage collection En Smalltalk, todo es un objeto y cada objeto pertenece a una clase.
  • 9.
    C++ • C++ (1983)fue desarrollado en Bell Laboratories por Bjarne Stroustrup. Influenciado por C y Simula. Lenguaje orientado a objetos híbrido, compatible con C. Soporta clases, encapsulación, sobrecarga de funciones y operadores, herencia múltiple, polimorfismo, clases/funciones parametrizadas (genéricas).
  • 10.
    Eiffel • Eiffel (1986)fue desarrollado por Bertrand Meyer. Influenciado por Smalltalk y ADA. Provee soporte para “Diseño por Contrato”: invariantes, pre-condiciones y postcondiciones. Soporta clases, encapsulación, sobrecarga de operadores, herencia múltiple, polimorfismo, clases parametrizadas (genéricas), garbage collection.
  • 11.
    Java • Java (1995)fue desarrollado en Sun Microsystems por James Gosling, Bill Joy y Guy Steele. Influenciado por C++. Java es un lenguaje orientado a objetos más puro que C++ y menos puro que Smalltalk. Soporta clases, encapsulación, herencia simple, polimorfismo, interfaces, garbage collection.
  • 12.
    C# • C# (2000)fue creado en Microsoft por Anders Hejlsberg. Influenciado por Java: objetos manejados mediante referencias, herencia simple e interfaces, garbage collection; y C++ (sobrecarga de operadores). Novedades: propiedades, eventos, delegados. Permite crear código intermedio que corre en el Common Language Runtime (CLR), en .NET
  • 13.
    ¿Qué es unObjeto? (1/2) • En POO, informalmente, un objeto representa una entidad del mundo real. • Entidades Físicas (Ej.: Vehículo, Casa, Producto) • Entidades Conceptuales  (Ej.: Proceso Químico, Transacción Bancaria) • Entidades de Software  (Ej.: Lista Enlazada, Interfaz Gráfica) Definición Formal de Objeto (Rumbaugh): “Un objeto es un concepto, abstracción o cosa con un significado y límites claros en el problema en cuestión”
  • 14.
    ¿Qué es unObjeto? (2/2) • Como entidades del mundo real, los diferentes objetos... Se pueden clasificar en tipos Poseen identidad propia Poseen características Poseen comportamiento
  • 15.
    Características de losobjetos Todas los objetos tienen una serie de características en común que permiten definir las características especificas de cada uno de ellos. Por ejemplo, Podríamos utilizar como características que definen al objeto vehículo las siguientes: color, marca y modelo. Al diseñar y programa los objetos y sus clases, esas características se van a denominar atributos o propiedades de del objeto.
  • 16.
    Comportamiento de losobjetos • Se refiere a una interfaz o un método de comunicación con tales objetos: Podemos acelerar el auto, encender el televisor, vaciar el basurero, cerrar la cortina, operar el microondas, etc. • El origen del nombre "métodos" (para las funciones) viene de esta idea: los métodos son la manera de comunicación, interacción y manipulación con los objetos.
  • 17.
    La POO enJava • Para crear objetos en Java se requiere primero, como en todos los lenguajes de programación orientados a objetos, de una clase, la cual tiene: Un tipo Características (Atributos o propiedades) Comportamiento (Métodos) Una clase es una descripción de un grupo de objetos (plantilla o molde)
  • 18.
    Clases • Una clasees una definición abstracta (plantilla o molde) de un objeto: Define la estructura y el comportamiento compartidos por los objetos. Sirve como modelo para la creación de objetos.
  • 19.
    Ejemplo de unaClase Abstracción • Clase: Auto • Características (Atributos)  Marca  Modelo  Año  Comportamiento (Métodos)  Encender  Apagar  Avanzar  Frenar class Auto { string Marca; string Modelo; Int Año; void Encender() { } void Apagar() { } void Avanzar() { } void Frenar() {
  • 20.
    Objetos (Instancias) • UnObjeto o Instancia es una ocurrencia o un representante de una clase en un programa. Es una variable del tipo de una clase. Clases Objetos Persona Juan Perro Samira Producto Chocolate Computador Dell Fracción F Stack S
  • 21.
    Atributos • Son aquellascaracterísticas que se asocian a un tipo de objeto (clase).  Nombre  Edad  Matrícula  Dirección  Los atributos que se asocian a una clase, dependen en gran medida del uso que se le dará dentro del sistema que se diseña actualmente, pero también pueden ser definidos pensando en futuras implementaciones.
  • 22.
    Métodos • Representan todasaquellas acciones(comportamiento) que puede realizar un objeto de una clase. • La clase Perro puede tener los métodos: Correr, Comer, Bañar, Ladrar • En la implementación, estos métodos son segmentos de código similares a los procedimientos y funciones utilizadas en la programación estructurada.
  • 23.
    Creación de objetosen Java FORMA 1: Auto c=new Auto(); c.Marca=”Ford”; c.Avanzar(); //Llamar un método del objeto FORMA 2: Auto c; c= new Auto(); c.Marca = “Ford”; c.Avanzar(); //Llamar un método del objeto
  • 24.
  • 25.
    Principios de laPOO Existen una serie de principios fundamentales para comprender cómo se modeliza la realidad al crear un programa bajo el paradigma de la orientación a objetos. Estos principios son: Abstracción Encapsulamiento Modularidad Jerarquía Paso de mensajes
  • 26.
    Abstracción Se define comola capacidad para examinar algo sin preocuparse de sus detalles internos. Existen dos tipos de abstracciones: abstracción de datos y abstracción funcional
  • 27.
    Abstracción de datos •Consiste en utilizar los datos sin preocuparse por los detalles de su implementación, es decir, lo importante es saber que tipo de información se puede utilizar y no como está almacenado. • Que Atributo o propiedad • Como Campo 27
  • 28.
    Abstracción funcional • Consisteen saber que es lo que hace un determinado proceso, pero no como lo hace. • Por ejemplo el proceso Ordenar de la clase Vector, sabemos que el método ordenará los elementos del vector, pero no nos interesa como lo hará. • Que  método • Como  algoritmo 28
  • 29.
    Encapsulamiento Al definir unaclase estamos encapsulando los atributos y los métodos. En una clase, el encapsulamiento permite ocultar detalles de implementación. 29
  • 30.
    Encapsulamiento  Toda clasetiene una serie de atributos y métodos asociados a ella. Todos ellos están encapsulados o contenidos dentro de la misma. Sabemos que hacen, pero no necesariamente como.
  • 31.
    Abstracción y Encapsulamiento •La abstracción y el encapsulamiento son conceptos complementarios • La abstracción se enfoca a la vista exterior de un objeto • El encapsulamiento previene a otros objetos ver su interior, donde el comportamiento de la abstracción se ha realizado. 31
  • 32.
    Modularidad Mediante la modularidad,se propone al programador dividir su aplicación en varios módulos diferentes (ya sea en forma de clases, paquetes o bibliotecas), cada uno de ellos con un sentido propio. Esta fragmentación disminuye el grado de dificultad del problema al que da respuesta el programa, pues se afronta el problema como un conjunto de problemas de menor dificultad, además de facilitar la comprensión del programa.
  • 33.
    Jerarquía Es cualquier clasificaciónu ordenación de abstracciones en una estructura de árbol. Algunos tipos de jerarquías son: Jerarquía de herencia, jerarquía de especialización y jerarquía de agregación.
  • 34.
    Paso de mensajes Medianteel denominado paso de mensajes, un objeto puede solicitar de otro objeto que realice una acción determinada o que modifique su estado. El paso de mensajes se suele implementar como llamadas a los métodos de otros objetos. Es el paso de mensajes el que permite la interacción entre los diferentes objetos en un programa que utiliza este paradigma. Desde el punto de vista de la programación estructurada, esto correspondería con la llamada a funciones o procedimientos.
  • 35.
    Elementos de laPOO 1 Constructores y destructores 2 Visibilidad 3 Sobrecarga 4 Herencia 5 Polimorfismo 6 Interfaces
  • 36.
    Constructores y destructores •Los constructores son métodos que sirven para construir, crear o inicializar un objeto o instancia de una clase. • NO tienen un valor de retorno (ni siquiera void). • Se deben llamar IGUAL que la clase. • Si no se especifica, Java proporciona automáticamente un constructor (vacío) para la clase. •Su función principal es llevar a cabo
  • 37.
    Constructores y destructores •Un constructor puede tener parámetros, que son usados para inicializar algunas variables en el objeto. Ejemplo: class CuentaBanco{ int numCuenta, saldo; CuentaBanco(int n, int s){ numCuenta=n; saldo=s; }
  • 38.
    Constructores y destructores •Son invocados con el operador new durante la creación de un objeto. • Por ejemplo, el constructor CuentaBanco puede ser definido con dos parámetros que indican su balance inicial: miCuenta= new CuentaBanco(1001, 650);
  • 39.
    Inicialización de variablesen los constructores • Es un área perfecta para inicializar muchas variables, ya que se ejecutará antes que ninguna otra parte del programa. • También es llamado función inicializadora de variables. class CtaCte { public CtaCte(){...} //Const. por default public CtaCte(int i){...} //Const. con un parametro }
  • 40.
    Constructores y destructores Undestructor es otro método de la clase que será el último que se ejecute y tiene por objetivo liberar espacio de campos de la clase.
  • 41.
    Visibilidad de métodosy atributos. Publica Estos métodos y atributos pueden ser vistos o utilizados en la misma clase donde se encuentran, en las clases que heredan de esta y en cualquier instancia creada de la clase o de sus subclases.
  • 42.
    Visibilidad de métodosy atributos. Privada Estos métodos y atributos solo pueden ser vistos o utilizados en la misma clase donde se encuentran y no son accesibles en las clases que heredan de esta y ni en las instancias creadas de la clase o de sus subclases.
  • 43.
    Visibilidad de métodosy atributos. Protegida Estos métodos y atributos pueden ser vistos o utilizados en la misma clase donde se encuentran, en las clases que heredan de esta, pero no pueden ser vistos ni usados en las instancias creadas de la clase o de sus subclases.
  • 44.
    Resumen sobre visibilidadde métodos y atributos AccesoModificador public private protected Misma clase sí sí sí Subclase sí no sí Clase donde se usa el objeto sí no no
  • 45.
    Paquete de ejercicios4 Restringir la visibilidad de algunos atributos y métodos de las clases desarrolladas en el paquete de ejercicios anterior.
  • 46.
    Sobrecarga (Overloading) En programaciónorientada a objetos, la sobrecarga se refiere a la posibilidad de tener dos o más funciones con el mismo nombre pero funcionalidad diferente. Es decir, dos o más funciones con el mismo nombre realizan acciones diferentes. El compilador usará una u otra dependiendo de los parámetros usados. public void HacerDeposito(int importe) { } public void HacerDeposito(int importe, bool acreditar) { }
  • 47.
    Paquete de ejercicios5 Ejercicios 2.2 de Classroom
  • 48.
    Herencia • Es unarelación entre clases en la cual una clase comparte la estructura y comportamiento definido en otra clase (Grady - Booch). • 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. +Avanzar() +Detenerse() -pasajeros Transporte Automóvil Avión Clase Base, padre o superclase Clases Derivadas, hijas o subclases
  • 49.
    Herencia simple La herenciasimple es aquella en la que cada clase derivada hereda de una única clase. En herencia simple, cada clase tiene un solo ascendiente. Cada clase puede tener, sin embargo, muchos descendientes.
  • 50.
    Herencia múltiple La herenciamúltiple es aquella en la cual una clase derivada tiene más de una clase base. Aunque el concepto de herencia múltiple es muy útil, el diseño de clases suele ser más complejo.
  • 51.
    Herencia • Una clase(clase hija) puede heredar, de otra clase (clase padre): Atributos y Métodos Empleado Cliente Alumno Persona Nombre Dirección
  • 52.
    • La herenciapermite crear subclases que heredan tanto las variables de estado como los métodos de su superclase. • Una subclase puede utilizar las variables y los métodos que tiene la clase que le hereda, sin necesidad de definirlos. Herencia
  • 53.
    Clase A Clase B ClaseC public class A { } public class B extends A { } public class C extends B { } hereda hereda Herencia
  • 54.
    Clase A Clase B ClaseC public class A { } public class B extends A { } public class C extends B { } Cuando se usa un método, lo busca aquí primero. Si no encuentra busca aquí. Si no encontró abajo busca aquí. Herencia
  • 55.
    Ventajas de laHerencia •Ahorra tiempo al reutilizar el código. •Reduce errores porque se utiliza algo que ya fue probado. •Hace mas fácil el mantenimiento class Cuenta //Clase Base { } class CtaCte : Cuenta //Clase Derivada { }
  • 56.
    Paquete de ejercicios3 Ejercicios 3.1 de Classroom
  • 57.
    El polimorfismo permiteque una misma operación pueda llevarse a cabo de forma diferente en clases diferentes. Por ejemplo, la operación mover, es distinta para una pieza de ajedrez que para una ficha de damas, pero ambos objetos pueden ser movidos. Nota: La implementación específica de una operación determinada en una clase determinada se denomina método. Polimorfismo
  • 58.
    Polimorfismo • Capacidad deque dos clases diferentes respondan de forma distinta a un mismo mensaje. • Esto quiere decir que dos clases que tengan un método con el mismo nombre, y que respondan al mismo tipo de mensaje (es decir, que reciba los mismo parámetros), ejecutarán acciones distintas.
  • 59.
    Polimorfismo • La definicióndel 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. Transporte Avanzar Frenar Transporte Avanzar Frenar Transporte Avanzar Transporte Avanzar() Frenar()
  • 60.
    Polimorfismo public class Transporte { publicvirtual void Avanzar() { Console.WriteLine("Transporte encendido"); } } public class Vehiculo:Transporte { public override void Avanzar() { //base.Avanzar(); Console.WriteLine("El vehiculo avanzará"); } } Vehiculo v2 = new Vehiculo(); v2.Avanzar();
  • 61.
    Paquete de ejercicios7 Ejercicios 3.2 de Classroom
  • 62.
    Interfaces • En programaciónorientada a objetos, una interfaz (también llamada protocolo) es un medio común para que los objetos no relacionados se comuniquen entre sí. Estas son definiciones de métodos y valores sobre los cuales los objetos están de acuerdo para cooperar. • Es un recurso de diseño que permite definir comportamiento. • La implementación de una interfaz es un contrato que obliga a la clase a implementar todos los métodos definidos en la interfaz
  • 63.
  • 64.
  • 65.
    Paquete de ejercicios8 Ejercicios 3.3 de Classroom