SlideShare una empresa de Scribd logo
Elementos Avanzados de
POO
Magister Víctor Andrade Soto
Logro
Al finalizar la sesión es estudiante empleará
eficientemente los conceptos de POO y los asociará con
el desarrollo de aplicaciones Java con Netbeans.
Utilidad
• Conocer las bases del paradigma de desarrollo del software denominado
orientación a objetos en general como un metalenguaje de programación
• Utilizar como criterio de modularización la identificación de los objetos del
dominio de cualquier problema que requiera una solución de objetos
• Tener claro que cada módulo de la aplicación software corresponde a un
objeto existente en el dominio del problema y en él se incluyen todos los
aspectos (funcionalidad, estados, datos, etc.) que son propios del objeto.
• Determinar que cuando se aborda una aplicación utilizando el paradigma
orientado a objetos la pregunta clave es:
¿Qué objetos constituyen el sistema?
Transformación
4
Solución en el
computador
Problema del
mundo real
Resultados
del problema
Formulación
en objetos
Datos de salida
Solución en el
mundo real
Dominio del problema
Representación
abstracta del
problema
Interpretación
de los datos
salida
Dominio de modelado orientado a objetos
Ejemplo de aplicación del paradigma OO.
• Diseño de la aplicación de control de la puerta de un
garaje:
• La puerta se abre cuando desde un coche se pulsa un mando.
• El motor mueve la puerta para abrirla o cerrarla.
• Cuando han transcurrido 10 segundos sin eventos la puerta se
cierra.
• Si mientras que se está cerrando ocurre un evento de mando u
obstáculo se vuelve a abrir
• El sistema se apaga coherentemente con un interruptor.
5
Ejemplo Garaje:Diseño OO
6
Claves de las metodología orientadas a
objetos.
• Abstracción: Busca una definición conceptual común a muchos objetos, tratando de identificar
sus características esenciales y agrupándolos por clases.
• Encapsulación: define de forma independiente la abstracción o interfaz del módulo y su
implementación y estructura interna.
• Modularidad: Describe el sistema como conjunto de módulos(objetos) descentralizados y
débilmente acoplados.
• Herencia: Jerarquiza las clases de acuerdo con afinidades de sus abstracciones.
• Tipado: Clasifica los objetos de forma estricta, restringiendo las interacciones a solo aquellas
que son coherentes.
• Concurrencia: Enfatiza la naturaleza independiente de cada objeto, adjudicándole si procede
líneas de control de flujo independientes.
• Persistencia: Enfatiza la naturaleza independiente de los objetos, adjudicándole una existencia
que sobrepasa a quien lo creó.
7
Beneficios de la programación orientada a
objetos
• Descomponibilidad : Se consigue de forma natural al problema.
• Componibilidad y Reusabilidad: Los objetos son reales y se comparten con cualquier otra
aplicación del mismo dominio.
• Comprensibilidad y consistencia con el dominio del problema: La función y abstracción de un
objeto es obvia ya que coincide con la del objeto del dominio real que representa.
• Continuidad y estabilidad frente a cambios: La evolución de una aplicación es consecuencia de
cambios en los objetos que la componen, y solo afecta a un módulo.
• Robustez y protección frente a fallos: Cada objeto se implementa como un ente independiente y
los estados de excepción que se puedan generar, pueden ser tratados dentro del propio objeto.
• Soporte inherente de la concurrencia: La concurrencia propia de los dominios reales se transfiere
de forma natural a la aplicación.
• Escalabilidad: La complejidad de la aplicación crece linealmente con la complejidad del problema
que se aborda.
8
Ambitos de aplicación de la orientación a
objetos.
Los métodos orientados a objetos son aplicables a todas las fases de
desarrollo de una aplicación software.
• (OOA) Análisis orientado a objetos: Es un método de análisis que examina los
requerimientos desde el punto de vista de las clases y objetos encontrados en el vocabulario del
dominio (problema).
• (OOD) Diseño orientado a objetos: Es un método de diseñar un programa basado en
identificar los módulos de que se compone, mediante componentes que representan conjuntamente
los datos y las operaciones de una abstracción.
• (OOP) Programación orientada a objetos: Es una forma de expresar un programa
basada en construcciones léxicas que se denominan clases y que describen los datos y el
comportamiento común de conjuntos de objetos, que cada uno de ellos representa una instancia
independiente de la clase.
9
Clases y objetos
• Las clases son los módulos de diseño que describen el estado y el
comportamiento de algún tipo de elemento que constituyen la aplicación
(y en OO también algún elemento del problema).
• Una clase contiene;
• Los atributos que describen la información relativa al objeto que describe la
clase.
• Los métodos u operaciones que describen el comportamiento de los objetos
que describe la clase.
• Los objetos o instancias son los módulos de ejecución que constituyen un
escenario de análisis o el programa de la aplicación que se ejecuta en un
computador.
• Los objetos se instancian (construyen) a partir de una clase:
• La clase constituyen la plantilla que describe los tipos de datos y la
funcionalidad (comportamiento)de los objetos que son instancias suyas.
• Los objetos definen los valores concretos de la propiedades definidas en las
clases que se asignan a un elemento específico del problema o aplicación.
10
Ejemplo de clases y objetos
11
Clases
Objetos
Atributos de una clase
• Son las variables que define la clase para contener la información que
requiere cada objetos descritos por ella para describir:
• El estado en que se encuentran como consecuencia de su evolución.
• Las propiedades de configuración cuando se crean.
• Cada atributo tienen definido el tipo de dato, esto es la información que
se le puede asignar. Los tipos pueden ser un tipo primitivo (Integer, Float,
Boolean, etc.) o la referencia a una clase.
• Se puede cualificar la visibilidad (quien puede leer o modificar el valor
asignado) de los atributos como públicos o privados:
• El valor de un atributos privado sólo puede ser accedido por los métodos del
propio objeto.
• El valor de los atributos públicos pueden ser también leídos por los métodos
de cualquier objetos que tenga la referencia al objeto.
• Un buen criterio es declarar los atributos de las clases como privados y
definir funciones de acceso si deben ser accedidos externamente. Cuando
la clase es sólo un tipo complejo de dato, suelen ser públicos.
12
Atributos estáticos
• Son variable que contienen información relativa a la clase, o a alguna
propiedad relativa al conjunto de las instancias de la clase.
• Para acceder a los atributos estáticos, hay que hacer referencia a la clase o
a cualquier instancia de la misma.
• En la representación UML, los atributos estáticos se representan
subrayados, los públicos con un prefijo + y los privados con un prefijo -.
13
Métodos (1)
• Son funciones y operaciones definidas con referencia a los objetos de una clase.
• Los métodos definidos en una clase definen su comportamiento:
• Proporcionan información deducible del estado de la instancia a la que se aplica.
• Produce cambios del estado de las instancia.
• Define operaciones básica, que sirven para construir otras mas complejas.
• Crear y construir nuevas instancias.
• Cuando se invoca un método puede retornar o no, un valor. Los valores retornados
tienen un tipo definido:
• Si el tipo retornado es un tipo primitivo, retorna un valor.
• Si el tipo retornado es una clase, retorna una referencia a un objeto de la clase.
• Los métodos pueden definir parámetros con tipo, a los que se asignan valores cuando
se invocan. Los valores de los parámetros son visibles en la implementación del
método.
• Si el tipo del parámetro es primitivo el valor se pasa por valor.
• Si el tipo de parámetro es una clase el valor se pasa por referencia.
• Los métodos pueden definirse con visibilidad privada o pública. Los métodos privados
sólo pueden ser invocados por métodos del mismo objeto.
14
Métodos (2)
• El conjunto de métodos públicos ofertados por una clase
constituyen la interfaz pública de los objetos de las clases
y definen su comportamiento como caja negra.
• Los cambios internos de una clase no afecta a las
aplicaciones que las usan, siempre que mantenga su
interfaz pública.
15
Métodos estáticos
• Son métodos que tienen acceso sólo a la información estática de la
clase y/o a la que recibe a través de los parámetros de invocación, y
no al estado propio de cualquier instancia de la clase.
• Pueden utilizarse para construir librerías de funciones que procesan
la información de los parámetros sin referencia a ningún objeto.
• En UML se representan subrayadas.
16
Herencia
• La herencia es el mecanismo por el que se especializan o extienden la
funcionalidad de una clase, diseñando a partir de ella nuevas clases.
• La clase A es una extensión de la clase B si es cierto que A es-un B,
• Cuando una clase extiende a otra, significa que hereda todo lo definido en ella
(atributos y métodos).
• La clase que resulta de la extensión puede añadir nuevos elementos (atributos y
métodos) a los heredados (Extensión), o modificar su comportamiento
(Refinamiento).
• Principales usos de la herencia:
• Herencia de implementación: La herencia como reutilización de código. Una clase
derivada puede heredar comportamiento de una clase base, por tanto, el código no
necesita volver a ser escrito para la derivada.
• Herencia de interfaz: La herencia como reutilización de conceptos: Esto ocurre cuando
una clase derivada sobrescribe el comportamiento definido por la clase base. Aunque
no se comparte ese código entre ambas clases, ambas comparten el prototipo del
método (comparten el concepto).
• La herencia puede ser Simple o Múltiple.
17
Ejemplo de herencia
18
Clase abstracta e interface
• Una clase abstracta es la que representa la parte común
de la clases que se derivan de ellas, pero que no
representan ningún objeto existente.
• Una clase abstracta puede utilizarse como base de
herencia, pero no para instanciar objetos.
• Una interfaz definen una interfaz pública (conjunto de
métodos) sin especificar su implementación.
• Cuando una clase implementa una interfaz tiene que
incluir en su interfaz pública la declaración de todos los
métodos definidos en ella.
19
Organización del diseño
• El diseño de una aplicación puede requerir la definición de muchas
clases. Estas clases se organizan en contenedores que se denominan
paquetes.
• Algunos paquetes son desarrollados como parte del diseño, pero la
mayoría de los paquetes y de las clases son legados (previamente
diseñados) e importados en el proyecto de la aplicación.
20
Claves de la POO en JAVA
Magister Víctor Andrade Soto
Wrappers
Como sabe, Java usa tipos primitivos, como int o double, para
contener los tipos de datos básicos admitidos por el lenguaje.
Los tipos primitivos, en lugar de objetos, se utilizan para estas
cantidades por el bien del rendimiento. Usar objetos para
estos tipos básicos agregaría una sobrecarga inaceptable
incluso para los cálculos más simples. Por lo tanto, los tipos
primitivos no son parte de la jerarquía de objetos, y no
heredan de Object.
A pesar del beneficio de rendimiento que ofrecen los tipos
primitivos, hay momentos en los que necesitará una
representación de objetos. Por ejemplo, no puede pasar un
tipo primitivo por referencia a un método. Además, muchas
de las estructuras de datos estándar implementadas por Java
operan en objetos, lo que significa que no puede usar estas
estructuras de datos para almacenar tipos primitivos. Para
manejar estas situaciones (y otras), Java proporciona wrappers
de tipo, que son clases que encapsulan un tipo primitivo
dentro de un objeto. A continuación, analizaremos los
wrappers más de cerca.
Los envoltorios (wrapper) de tipo son Double, Float, Long, Integer,
Short, Byte, Character, y Boolean, que están empaquetados en
java.lang. Estas clases ofrecen una amplia gama de métodos que le
permiten integrar completamente los tipos primitivos en la jerarquía de
objetos de Java.
Wrappers de tipo numérico
Probablemente las envolturas de tipo más utilizadas son aquellas que
representan valores numéricos. Estos son Byte, Short, Integer, Long, Float y
Double. Todos los envoltorios de tipo numérico heredan de la clase abstracta
Number. Number declara métodos que devuelven el valor de un objeto en
cada uno de los diferentes tipos numéricos. Estos métodos se muestran aquí:
byte byteValue()
double doubleValue()
float floatValue()
int intValue()
long longValue()
short shortValue()
Por ejemplo, doubleValue() devuelve el valor de un objeto como un
double, floatValue() devuelve el valor como un float, y así
sucesivamente. Estos métodos son implementados por cada uno de los
envoltorios de tipo numérico.
Todas las envolturas de tipo numérico definen constructores que
permiten que un objeto se construya a partir de un valor dado, o una
representación de cadena de ese valor. Por ejemplo, aquí están los
constructores definidos para Integer y Double:
Integer(int num)
Integer(String str) throws NumberFormatException
Double(double num)
Double(String str) throws NumberFormatException
Uso de valueOf() en Wrapper
Si str no contiene un valor numérico válido, entonces se lanza un
NumberFormatException. Sin embargo, a partir de JDK 9, los
constructores wrapper de tipo han quedado obsoletos. Actualmente,
se recomienda que use uno de los métodos valueOf() para obtener un
objeto wrapper. El método [java]valueOf()[/java] es un miembro
estático de todas las clases wrappers y todas las clases numéricas
admiten formas que convierten un valor numérico o una cadena en un
objeto. Por ejemplo, aquí hay dos formas compatibles con Integer:
static Integer valueOf(int val)
static Integer valueOf(String valStr) throws NumberFormatException
AutoBoxing /UnBoxing
Autoboxing
Integer intObj = 10;
Float floatObj =4.45;
Double doubleObj = 3.3;
Unboxing
int entero = intObj;
float flotante = floatObj;
Double doble= doubleObj;
Tipo primitivo/Tipo envolvente
Clase Wrapper
Programa
Métodos para Boxing/UnBoxing
Modificadores de Acceso
En su soporte para la encapsulación, la clase proporciona los medios
por los que se puede controlar el acceso a los miembros.
Aunque el enfoque de Java es un poco más sofisticado, en esencia, hay
dos tipos básicos de miembros de la clase: público (public) y privado
(private). Se puede acceder libremente a un miembro público mediante
un código definido fuera de su clase. Se puede acceder a un miembro
privado solo por otros métodos definidos por su clase. Es a través del
uso de miembros privados que el acceso está controlado.
Restringir el acceso a los miembros de una clase es una parte
fundamental de la POO, ya que ayuda a evitar el mal uso de un objeto.
Al permitir el acceso a datos privados solo a través de un conjunto de
métodos bien definidos, puede evitar que se asignen valores
incorrectos a esos datos, por ejemplo, realizando una verificación de
rango.
• No es posible que el código fuera de la clase establezca el valor de un
miembro privado directamente.
• También puede controlar con precisión cómo y cuándo se utilizan los
datos dentro de un objeto.
Por lo tanto, cuando se implementa correctamente, una clase crea una
“caja negra” que se puede usar, pero cuyo funcionamiento interno no
está abierto a alteraciones. Hasta este punto, no ha tenido que
preocuparse por el control de acceso porque Java proporciona una
configuración de acceso predeterminada en la que, para los tipos de
programas mostrados anteriormente, los miembros de una clase están
disponibles libremente para el código en otro programa. (Por lo tanto,
para los ejemplos anteriores, la configuración de acceso default es
esencialmente public.)
Default
Cuando no se especifica ningún modificador de acceso para una clase,
método o miembro de datos, se dice estar teniendo modificador de
acceso default por defecto.
Los miembros de datos, clase o métodos que no se declaran utilizando
ningún modificador de acceso, es decir, que tengan un modificador de
acceso predeterminado, solo son accesibles dentro del mismo paquete.
En este ejemplo, crearemos dos paquetes y las clases en los paquetes
tendrán los modificadores de acceso predeterminados e intentaremos
acceder a una clase de un paquete desde otra clase del segundo
paquete.
Ejemplo
Modificar DemoDefault
Modificador de acceso Privado
El modificador de acceso privado se especifica con la palabra clave
[java]private[/java]. Los métodos o los miembros de datos declarados
como privados solo son accesibles dentro de la clase en la que se
declaran.
Cualquier otra clase del mismo paquete no podrá acceder a estos
miembros.
Las clases e interfaces no se pueden declarar como privadas (private).
En este ejemplo, crearemos dos clases A y B dentro del mismo paquete
p1. Declararemos un método en la clase A como privado e
intentaremos acceder a este método desde la clase B y veremos el
resultado.
Ejemplo
Modificar A
Modificador de acceso protegido
(protected)
El modificador de acceso protegido se especifica con la palabra clave
[java]protected[/java].
Los métodos o miembros de datos declarados como
[java]protected[/java] son accesibles dentro del mismo paquete o sub-
clases en paquetes diferentes.
En este ejemplo, crearemos dos paquetes p1 y p2. La clase A en p1 es
public, para acceder a ella desde p2. El método que se muestra en la
clase A está protegido y la clase B se hereda de la clase A y, a
continuación, se accede a este método protegido creando un objeto de
clase B.
Ejemplo
Modificador de acceso público (public)
El modificador de acceso público se especifica con la palabra clave
[java]public[/java].
El modificador de acceso público tiene el alcance más amplio entre
todos los demás modificadores de acceso.
Las clases, métodos o miembros de datos que se declaran como
públicos son accesibles desde cualquier lugar del programa. No hay
restricciones en el alcance de los miembros de datos públicos.
Modificadores que no son de acceso
En Java, tenemos 7 modificadores que no son de acceso o, a veces, también
llamados especificadores. Se usan con clases, métodos, variables,
constructores, etc. para proporcionar información sobre su comportamiento
a la JVM. Y son:
static
final
abstract
synchronized
transient
volatile
native
Herencia
La herencia es un pilar importante de OOP (Programación Orientada a
Objetos). Es el mecanismo en Java por el cual una clase permite
heredar las características (atributos y métodos) de otra clase. Aprenda
más a continuación.
En el lenguaje de Java, una clase que se hereda se
denomina superclase. La clase que hereda se llama subclase. Por lo
tanto, una subclase es una versión especializada de una superclase.
Hereda todas las variables y métodos definidos por la superclase y
agrega sus propios elementos únicos.
Herencia
Terminología importante
Superclase: la clase cuyas características se heredan se conoce como
superclase (o una clase base o una clase principal).
Subclase: la clase que hereda la otra clase se conoce como subclase (o
una clase derivada, clase extendida o clase hija). La subclase puede
agregar sus propios campos y métodos además de los campos y
métodos de la superclase.
Reutilización: la herencia respalda el concepto de “reutilización”, es
decir, cuando queremos crear una clase nueva y ya hay una clase que
incluye parte del código que queremos, podemos derivar nuestra
nueva clase de la clase existente. Al hacer esto, estamos reutilizando
los campos/atributos y métodos de la clase existente.
En el mundo real
Vinculado a la Herencia
Sobreescritura de Métodos en JAVA
En una jerarquía de clases, cuando un método de
una subclase tiene el mismo nombre y tipo que un método
de su superclase, se dice que el método de
la superclase sobrescribe el método de la superclase. Cuando
se llama a un método sobrescrito desde una subclase, ésta
siempre se refiere a la versión del método definida en la
subclase. La versión del método definido por la superclase
quedará oculta. Por ejemplo:
Ejemplo 1
Ejemplo 2
Polimorfismo
En programación orientada a objetos, polimorfismo es la capacidad que
tienen los objetos de una clase en ofrecer respuesta distinta e
independiente en función de los parámetros (diferentes
implementaciones) utilizados durante su invocación. Dicho de otro
modo el objeto como entidad puede contener valores de diferentes
tipos durante la ejecución del programa.
En JAVA el término polimorfismo también suele definirse como
‘Sobrecarga de parámetros’, que así de pronto no suena tan divertido
pero como veremos más adelante induce a cierta confusión. En
realidad suele confundirse con el tipo de poliformismo más común,
pero no es del todo exacto usar esta denominación.
Ejemplo de Polimorfismo
Un ejemplo clásico de poliformismo es el siguiente. Podemos crear dos
clases distintas: Gato y Perro, que heredan de la superclase Animal. La
clase Animal tiene el método abstracto makesound() que se
implementa de forma distinta en cada una de las subclases (gatos y
perros suenan de forma distinta). Entonces, un tercer objeto puede
enviar el mensaje de hacer sonido a un grupo de objetos Gato y Perro
por medio de una variable de referencia de clase Animal, haciendo así
un uso polimórfico de dichos objetos respecto del mensaje mover.
class Animal {
public void makeSound() {
System.out.println("Grr...");
}
}
class Cat extends Animal {
public void makeSound() {
System.out.println("Meow");
}
}
class Dog extends Animal {
public void makeSound() {
System.out.println("Woof");
}
}
Como todos los objetos Gato y Perro son objetos Animales, podemos
hacer lo siguiente
public static void main(String[ ] args) {
Animal a = new Dog();
Animal b = new Cat();
}
Creamos dos variables de referencia de tipo Animal y las apuntamos a
los objetos Gato y Perro. Ahora, podemos llamar a los métodos
makeSound().
a.makeSound();
//Outputs "Woof"
b.makeSound();
//Outputs "Meow“
Como decía el polimorfismo, que se refiere a la idea de "tener muchas
formas", ocurre cuando hay una jerarquía de clases relacionadas entre
sí a través de la herencia y este es un buen ejemplo.
Por lo general diremos que existen 3 tipos de polimorfismo:
Sobrecarga: El más conocido y se aplica cuando existen funciones con el
mismo nombre en clases que son completamente independientes una de la
otra.
Paramétrico: Existen funciones con el mismo nombre pero se usan diferentes
parámetros (nombre o tipo). Se selecciona el método dependiendo del tipo
de datos que se envíe.
Inclusión: Es cuando se puede llamar a un método sin tener que conocer su
tipo, así no se toma en cuenta los detalles de las clases especializadas,
utilizando una interfaz común.
En líneas generales en lo que se refiere a la POO, la idea fundamental es
proveer una funcionalidad predeterminada o común en la clase base y de las
clases derivadas se espera que provean una funcionalidad más específica.
Super e invocación de métodos sobrescritos
InstanceOf
El operador instanceof sirve para conocer si un objeto es de un tipo
determinado. Por tipo, nos referimos a clase o interfaz (interface), es
decir, si el objeto pasaría el test «ES UN» para esa clase o ese interfaz,
especificado a la derecha del operador.
public class Vehiculos {
private String modelo;
private String color;
// metodos...
}
public class Coches extends Vehiculos{
private int puertas;
public static void main (String[] args){
Coches coche1 = new Coches();
if(coche1 instanceof Vehiculos){
System.out.println("coche1 es un coche y también un vehículo.");
}
}
// métodos...
}
Práctica: Desarrolle 1 aplicación con
formularios que utilice
• Herencia
• Polimorfismo
• Abstracción

Más contenido relacionado

La actualidad más candente

Cálculo relacional
Cálculo relacionalCálculo relacional
Cálculo relacional
DorvinEduardo
 
Topicos Avanzados de Programacion Unidad 1 Eventos
Topicos Avanzados de Programacion Unidad 1 EventosTopicos Avanzados de Programacion Unidad 1 Eventos
Topicos Avanzados de Programacion Unidad 1 Eventos
José Antonio Sandoval Acosta
 
Modelo conceptual
Modelo conceptual Modelo conceptual
Modelo conceptual
Claü Vides
 
Casos de Uso en UML
Casos de Uso en UMLCasos de Uso en UML
Casos de Uso en UML
Henry Cuascota
 
Herencia en C++
Herencia en C++Herencia en C++
Herencia en C++
joel1386
 
9. introducción a uml
9. introducción a uml9. introducción a uml
9. introducción a uml
HectorMamani
 
Diseño de sistemas - UML - compendio
Diseño de sistemas  -  UML - compendioDiseño de sistemas  -  UML - compendio
Diseño de sistemas - UML - compendio
Jose Diaz Silva
 
U1 s3 introducción a uml parte 1
U1 s3 introducción a uml parte 1U1 s3 introducción a uml parte 1
U1 s3 introducción a uml parte 1
Giovanni Mézquita Hoyos
 
Conceptos Fundamentales de Base de Datos
Conceptos Fundamentales de Base de DatosConceptos Fundamentales de Base de Datos
Conceptos Fundamentales de Base de Datos
Carlos Rafael Luna Vargas
 
Programación Orientada a Objetos - atributos y métodos
Programación Orientada a Objetos - atributos y métodosProgramación Orientada a Objetos - atributos y métodos
Programación Orientada a Objetos - atributos y métodos
Alvaro Enrique Ruano
 
Diagrama de clases
Diagrama de clasesDiagrama de clases
Diagrama de clases
Nedoww Haw
 
UML: CASOS DE USO
UML: CASOS DE USOUML: CASOS DE USO
UML: CASOS DE USO
Katty Landacay
 
Topicos Avanzados de Programacion - Unidad 4 programacion concurrente
Topicos Avanzados de Programacion - Unidad 4 programacion concurrenteTopicos Avanzados de Programacion - Unidad 4 programacion concurrente
Topicos Avanzados de Programacion - Unidad 4 programacion concurrente
José Antonio Sandoval Acosta
 
Estructuras de datos en Introducción a la Programación
Estructuras de datos en Introducción a la ProgramaciónEstructuras de datos en Introducción a la Programación
Estructuras de datos en Introducción a la Programación
Facultad de Ciencias y Sistemas
 
Modelos Prescriptivos del Desarrollo del Sistema de Información
Modelos Prescriptivos del Desarrollo del Sistema de InformaciónModelos Prescriptivos del Desarrollo del Sistema de Información
Modelos Prescriptivos del Desarrollo del Sistema de InformaciónIsaias Toledo
 

La actualidad más candente (20)

Cálculo relacional
Cálculo relacionalCálculo relacional
Cálculo relacional
 
Topicos Avanzados de Programacion Unidad 1 Eventos
Topicos Avanzados de Programacion Unidad 1 EventosTopicos Avanzados de Programacion Unidad 1 Eventos
Topicos Avanzados de Programacion Unidad 1 Eventos
 
Modelo conceptual
Modelo conceptual Modelo conceptual
Modelo conceptual
 
Casos de Uso en UML
Casos de Uso en UMLCasos de Uso en UML
Casos de Uso en UML
 
4 unidad polimorfismo
4 unidad polimorfismo4 unidad polimorfismo
4 unidad polimorfismo
 
Herencia en C++
Herencia en C++Herencia en C++
Herencia en C++
 
9. introducción a uml
9. introducción a uml9. introducción a uml
9. introducción a uml
 
Diseño de sistemas - UML - compendio
Diseño de sistemas  -  UML - compendioDiseño de sistemas  -  UML - compendio
Diseño de sistemas - UML - compendio
 
U1 s3 introducción a uml parte 1
U1 s3 introducción a uml parte 1U1 s3 introducción a uml parte 1
U1 s3 introducción a uml parte 1
 
Conceptos Fundamentales de Base de Datos
Conceptos Fundamentales de Base de DatosConceptos Fundamentales de Base de Datos
Conceptos Fundamentales de Base de Datos
 
Programación Orientada a Objetos - atributos y métodos
Programación Orientada a Objetos - atributos y métodosProgramación Orientada a Objetos - atributos y métodos
Programación Orientada a Objetos - atributos y métodos
 
Diagrama de clases
Diagrama de clasesDiagrama de clases
Diagrama de clases
 
UML: CASOS DE USO
UML: CASOS DE USOUML: CASOS DE USO
UML: CASOS DE USO
 
Manual sql server parte 1
Manual sql server parte 1Manual sql server parte 1
Manual sql server parte 1
 
Modelo Conceptual UML
Modelo Conceptual UMLModelo Conceptual UML
Modelo Conceptual UML
 
Topicos Avanzados de Programacion - Unidad 4 programacion concurrente
Topicos Avanzados de Programacion - Unidad 4 programacion concurrenteTopicos Avanzados de Programacion - Unidad 4 programacion concurrente
Topicos Avanzados de Programacion - Unidad 4 programacion concurrente
 
ODMG
ODMGODMG
ODMG
 
Estructuras de datos en Introducción a la Programación
Estructuras de datos en Introducción a la ProgramaciónEstructuras de datos en Introducción a la Programación
Estructuras de datos en Introducción a la Programación
 
Modelos Prescriptivos del Desarrollo del Sistema de Información
Modelos Prescriptivos del Desarrollo del Sistema de InformaciónModelos Prescriptivos del Desarrollo del Sistema de Información
Modelos Prescriptivos del Desarrollo del Sistema de Información
 
Clase 12a uml_clases
Clase 12a uml_clasesClase 12a uml_clases
Clase 12a uml_clases
 

Similar a Elementos avanzados de poo

PROGRAMACION_ORIENTADA_A_OBJETOS.pdf
PROGRAMACION_ORIENTADA_A_OBJETOS.pdfPROGRAMACION_ORIENTADA_A_OBJETOS.pdf
PROGRAMACION_ORIENTADA_A_OBJETOS.pdf
MariaTeresaGarznPrez
 
Presentación P.O.O
Presentación P.O.OPresentación P.O.O
Presentación P.O.O
Geraldin Vergara
 
Programación Orientada a Objetos
Programación Orientada a ObjetosProgramación Orientada a Objetos
Programación Orientada a Objetos
Zamantha Gonzalez Universidad Nacional Abierta
 
Trabajo sistemas digitales
Trabajo sistemas digitalesTrabajo sistemas digitales
Trabajo sistemas digitales
Dany7x
 
Poo Java
Poo JavaPoo Java
Poo Java
eccutpl
 
Asignacion2
Asignacion2Asignacion2
Asignacion2
danilotorres08
 
Conceptos básicos de programación orientada a objetos (poo)
Conceptos básicos de programación orientada a objetos (poo)Conceptos básicos de programación orientada a objetos (poo)
Conceptos básicos de programación orientada a objetos (poo)
Maria Garcia
 
Programación orientada-a-objetos
Programación orientada-a-objetosProgramación orientada-a-objetos
Programación orientada-a-objetos
TAPIA SILVA EVELINA
 
Lenguaje de Programación Orientada a Objetos
Lenguaje  de  Programación  Orientada  a Objetos Lenguaje  de  Programación  Orientada  a Objetos
Lenguaje de Programación Orientada a Objetos
Marielena Lujano
 
programacion orientada a objetos con PHP .pptx
programacion orientada a objetos con PHP .pptxprogramacion orientada a objetos con PHP .pptx
programacion orientada a objetos con PHP .pptx
RICARDOEDGARDOQUINTA
 
Java – Clases y Objetos
Java – Clases y ObjetosJava – Clases y Objetos
Java – Clases y Objetos
Galo Candela
 
Semanas01y02
Semanas01y02Semanas01y02
Semanas01y02luisortiz
 
PROGRAMACION ORIENTADA A OBJETO
PROGRAMACION ORIENTADA A OBJETOPROGRAMACION ORIENTADA A OBJETO
PROGRAMACION ORIENTADA A OBJETO
Anabel Jaramillo
 
Base de Datos Orientada a Objetos
Base de Datos Orientada a ObjetosBase de Datos Orientada a Objetos
Base de Datos Orientada a Objetos
Andrés Felipe Montoya Ríos
 
PROGRAMACIÓN ORIENTADA A OBJETOS
PROGRAMACIÓN ORIENTADA A OBJETOSPROGRAMACIÓN ORIENTADA A OBJETOS
PROGRAMACIÓN ORIENTADA A OBJETOS
GREINDER MARCHENA & LIZ VASQUEZ
 

Similar a Elementos avanzados de poo (20)

Principios poo
Principios pooPrincipios poo
Principios poo
 
Programación orientada a objetos
Programación orientada a objetosProgramación orientada a objetos
Programación orientada a objetos
 
Prog oo con_java
Prog oo con_javaProg oo con_java
Prog oo con_java
 
PROGRAMACION_ORIENTADA_A_OBJETOS.pdf
PROGRAMACION_ORIENTADA_A_OBJETOS.pdfPROGRAMACION_ORIENTADA_A_OBJETOS.pdf
PROGRAMACION_ORIENTADA_A_OBJETOS.pdf
 
Presentación P.O.O
Presentación P.O.OPresentación P.O.O
Presentación P.O.O
 
Programación Orientada a Objetos
Programación Orientada a ObjetosProgramación Orientada a Objetos
Programación Orientada a Objetos
 
Trabajo sistemas digitales
Trabajo sistemas digitalesTrabajo sistemas digitales
Trabajo sistemas digitales
 
Poo Java
Poo JavaPoo Java
Poo Java
 
Asignacion2
Asignacion2Asignacion2
Asignacion2
 
Conceptos básicos de programación orientada a objetos (poo)
Conceptos básicos de programación orientada a objetos (poo)Conceptos básicos de programación orientada a objetos (poo)
Conceptos básicos de programación orientada a objetos (poo)
 
Programación orientada-a-objetos
Programación orientada-a-objetosProgramación orientada-a-objetos
Programación orientada-a-objetos
 
Lenguaje de Programación Orientada a Objetos
Lenguaje  de  Programación  Orientada  a Objetos Lenguaje  de  Programación  Orientada  a Objetos
Lenguaje de Programación Orientada a Objetos
 
programacion orientada a objetos con PHP .pptx
programacion orientada a objetos con PHP .pptxprogramacion orientada a objetos con PHP .pptx
programacion orientada a objetos con PHP .pptx
 
Java – Clases y Objetos
Java – Clases y ObjetosJava – Clases y Objetos
Java – Clases y Objetos
 
Guía
GuíaGuía
Guía
 
Semanas01y02
Semanas01y02Semanas01y02
Semanas01y02
 
Semanas01y02
Semanas01y02Semanas01y02
Semanas01y02
 
PROGRAMACION ORIENTADA A OBJETO
PROGRAMACION ORIENTADA A OBJETOPROGRAMACION ORIENTADA A OBJETO
PROGRAMACION ORIENTADA A OBJETO
 
Base de Datos Orientada a Objetos
Base de Datos Orientada a ObjetosBase de Datos Orientada a Objetos
Base de Datos Orientada a Objetos
 
PROGRAMACIÓN ORIENTADA A OBJETOS
PROGRAMACIÓN ORIENTADA A OBJETOSPROGRAMACIÓN ORIENTADA A OBJETOS
PROGRAMACIÓN ORIENTADA A OBJETOS
 

Más de LCA

Riesgos de no implementar el estándar itil en una empresa
Riesgos de no implementar el estándar itil en una empresaRiesgos de no implementar el estándar itil en una empresa
Riesgos de no implementar el estándar itil en una empresa
LCA
 
S01.s2 material
S01.s2 materialS01.s2 material
S01.s2 material
LCA
 
Expo 1
Expo 1Expo 1
Expo 1
LCA
 
Tarea semana01 sesión 2
Tarea semana01   sesión 2Tarea semana01   sesión 2
Tarea semana01 sesión 2
LCA
 
G1 expo1 s2.1
G1 expo1 s2.1G1 expo1 s2.1
G1 expo1 s2.1
LCA
 
Foro s2 5 ventajas del estándar de trabajo itil
Foro s2 5 ventajas del estándar de trabajo itilForo s2 5 ventajas del estándar de trabajo itil
Foro s2 5 ventajas del estándar de trabajo itil
LCA
 
Itil estrategia del servicio
Itil  estrategia del servicioItil  estrategia del servicio
Itil estrategia del servicio
LCA
 
Ciclo de vida de itil
Ciclo de vida de itilCiclo de vida de itil
Ciclo de vida de itil
LCA
 
Grupo 1 itil estrategia del servicio
Grupo 1 itil  estrategia del servicioGrupo 1 itil  estrategia del servicio
Grupo 1 itil estrategia del servicio
LCA
 
S01.s1 material
S01.s1 materialS01.s1 material
S01.s1 material
LCA
 
S02.s1 material
S02.s1 materialS02.s1 material
S02.s1 material
LCA
 
S02.s2 material
S02.s2 materialS02.s2 material
S02.s2 material
LCA
 
S03.s1 material
S03.s1 materialS03.s1 material
S03.s1 material
LCA
 
S03.s2 material
S03.s2 materialS03.s2 material
S03.s2 material
LCA
 
Modelo proyecto
Modelo proyectoModelo proyecto
Modelo proyecto
LCA
 
Java class library
Java class libraryJava class library
Java class library
LCA
 
Herencia para jframe y diseño de jmenu,j internalframe, jdialog
Herencia para jframe y diseño de jmenu,j internalframe, jdialogHerencia para jframe y diseño de jmenu,j internalframe, jdialog
Herencia para jframe y diseño de jmenu,j internalframe, jdialog
LCA
 
Gu is awt_swing
Gu is awt_swingGu is awt_swing
Gu is awt_swing
LCA
 

Más de LCA (18)

Riesgos de no implementar el estándar itil en una empresa
Riesgos de no implementar el estándar itil en una empresaRiesgos de no implementar el estándar itil en una empresa
Riesgos de no implementar el estándar itil en una empresa
 
S01.s2 material
S01.s2 materialS01.s2 material
S01.s2 material
 
Expo 1
Expo 1Expo 1
Expo 1
 
Tarea semana01 sesión 2
Tarea semana01   sesión 2Tarea semana01   sesión 2
Tarea semana01 sesión 2
 
G1 expo1 s2.1
G1 expo1 s2.1G1 expo1 s2.1
G1 expo1 s2.1
 
Foro s2 5 ventajas del estándar de trabajo itil
Foro s2 5 ventajas del estándar de trabajo itilForo s2 5 ventajas del estándar de trabajo itil
Foro s2 5 ventajas del estándar de trabajo itil
 
Itil estrategia del servicio
Itil  estrategia del servicioItil  estrategia del servicio
Itil estrategia del servicio
 
Ciclo de vida de itil
Ciclo de vida de itilCiclo de vida de itil
Ciclo de vida de itil
 
Grupo 1 itil estrategia del servicio
Grupo 1 itil  estrategia del servicioGrupo 1 itil  estrategia del servicio
Grupo 1 itil estrategia del servicio
 
S01.s1 material
S01.s1 materialS01.s1 material
S01.s1 material
 
S02.s1 material
S02.s1 materialS02.s1 material
S02.s1 material
 
S02.s2 material
S02.s2 materialS02.s2 material
S02.s2 material
 
S03.s1 material
S03.s1 materialS03.s1 material
S03.s1 material
 
S03.s2 material
S03.s2 materialS03.s2 material
S03.s2 material
 
Modelo proyecto
Modelo proyectoModelo proyecto
Modelo proyecto
 
Java class library
Java class libraryJava class library
Java class library
 
Herencia para jframe y diseño de jmenu,j internalframe, jdialog
Herencia para jframe y diseño de jmenu,j internalframe, jdialogHerencia para jframe y diseño de jmenu,j internalframe, jdialog
Herencia para jframe y diseño de jmenu,j internalframe, jdialog
 
Gu is awt_swing
Gu is awt_swingGu is awt_swing
Gu is awt_swing
 

Último

Licencias por enfermedad de hijo menor de 2 años chile
Licencias por enfermedad de hijo menor de 2 años chileLicencias por enfermedad de hijo menor de 2 años chile
Licencias por enfermedad de hijo menor de 2 años chile
franciscasalinaspobl
 
CORFEINE_4587888920140526_2aSE_P04_2.pdf
CORFEINE_4587888920140526_2aSE_P04_2.pdfCORFEINE_4587888920140526_2aSE_P04_2.pdf
CORFEINE_4587888920140526_2aSE_P04_2.pdf
CarlosMJmzsifuentes
 
Presentación sobre la geometría, aplicaciones y ramas
Presentación sobre la geometría, aplicaciones y ramasPresentación sobre la geometría, aplicaciones y ramas
Presentación sobre la geometría, aplicaciones y ramas
JosMuoz943377
 
Diagnóstico Institucional en psicologia.docx
Diagnóstico  Institucional en psicologia.docxDiagnóstico  Institucional en psicologia.docx
Diagnóstico Institucional en psicologia.docx
cabreraelian69
 
Claves Ipsos numero 29 --- Mayo 2024.pdf
Claves Ipsos numero 29 --- Mayo 2024.pdfClaves Ipsos numero 29 --- Mayo 2024.pdf
Claves Ipsos numero 29 --- Mayo 2024.pdf
Emisor Digital
 
Presentación Cuenta Pública HLS 2023.pptx
Presentación Cuenta Pública HLS 2023.pptxPresentación Cuenta Pública HLS 2023.pptx
Presentación Cuenta Pública HLS 2023.pptx
hlscomunicaciones
 
El narcisismo actualmente en el mundo 2024
El narcisismo actualmente en el mundo 2024El narcisismo actualmente en el mundo 2024
El narcisismo actualmente en el mundo 2024
pepepinon408
 
Desarrollo de Habilidades de Pensamiento Informatica
Desarrollo de Habilidades de Pensamiento InformaticaDesarrollo de Habilidades de Pensamiento Informatica
Desarrollo de Habilidades de Pensamiento Informatica
floralbaortega88
 
Primeros 70 países por IDH ajustado por desigualdad (2024).pdf
Primeros 70 países por IDH ajustado por desigualdad  (2024).pdfPrimeros 70 países por IDH ajustado por desigualdad  (2024).pdf
Primeros 70 países por IDH ajustado por desigualdad (2024).pdf
JC Díaz Herrera
 
Tecnologia de materiales T01- Agregados.docx (1).pdf
Tecnologia de materiales T01- Agregados.docx (1).pdfTecnologia de materiales T01- Agregados.docx (1).pdf
Tecnologia de materiales T01- Agregados.docx (1).pdf
uriel132
 
Ojiva porcentual para el análisis de datos
Ojiva porcentual para el análisis de datosOjiva porcentual para el análisis de datos
Ojiva porcentual para el análisis de datos
JaimeYael
 
Análisis Datos imprecisos con lógica difusa.pdf
Análisis Datos imprecisos con lógica difusa.pdfAnálisis Datos imprecisos con lógica difusa.pdf
Análisis Datos imprecisos con lógica difusa.pdf
ReAViILICo
 
Mapa-conceptual-del-Neoclasicismo-4.pptx
Mapa-conceptual-del-Neoclasicismo-4.pptxMapa-conceptual-del-Neoclasicismo-4.pptx
Mapa-conceptual-del-Neoclasicismo-4.pptx
diegoandrerodriguez2
 
Pobreza en el Perú en 2023.pdf practicag
Pobreza en el Perú en 2023.pdf practicagPobreza en el Perú en 2023.pdf practicag
Pobreza en el Perú en 2023.pdf practicag
jairoperezjpnazca
 
ORIENTACIONES PSIET orientación sobre el pesiet
ORIENTACIONES PSIET orientación sobre el pesietORIENTACIONES PSIET orientación sobre el pesiet
ORIENTACIONES PSIET orientación sobre el pesiet
Maria Apellidos
 
Diapositivas D.I.P.. sobre la importancia que tiene la interpol en Honduraspptx
Diapositivas D.I.P.. sobre la importancia que tiene la interpol en HonduraspptxDiapositivas D.I.P.. sobre la importancia que tiene la interpol en Honduraspptx
Diapositivas D.I.P.. sobre la importancia que tiene la interpol en Honduraspptx
WalterOrdoez22
 
Morfofisiopatologia Humana I________ UCS
Morfofisiopatologia Humana I________ UCSMorfofisiopatologia Humana I________ UCS
Morfofisiopatologia Humana I________ UCS
LisaCinnamoroll
 
Portada De Revista De Ciencia Elegante Moderno Azul y Amarillo.pdf
Portada De Revista De Ciencia Elegante Moderno Azul y Amarillo.pdfPortada De Revista De Ciencia Elegante Moderno Azul y Amarillo.pdf
Portada De Revista De Ciencia Elegante Moderno Azul y Amarillo.pdf
ssusere34b451
 
RESPUESTAS A PREGUNTAS FRECUENTES SOBRE LA VITIVINICULTURA ARGENTINA.pdf
RESPUESTAS A PREGUNTAS FRECUENTES SOBRE LA VITIVINICULTURA ARGENTINA.pdfRESPUESTAS A PREGUNTAS FRECUENTES SOBRE LA VITIVINICULTURA ARGENTINA.pdf
RESPUESTAS A PREGUNTAS FRECUENTES SOBRE LA VITIVINICULTURA ARGENTINA.pdf
Observatorio Vitivinícola Argentino
 
TABla de detracciones 123456 antonela tirado 653266666666666
TABla de detracciones 123456 antonela tirado 653266666666666TABla de detracciones 123456 antonela tirado 653266666666666
TABla de detracciones 123456 antonela tirado 653266666666666
LizetTiradoRodriguez
 

Último (20)

Licencias por enfermedad de hijo menor de 2 años chile
Licencias por enfermedad de hijo menor de 2 años chileLicencias por enfermedad de hijo menor de 2 años chile
Licencias por enfermedad de hijo menor de 2 años chile
 
CORFEINE_4587888920140526_2aSE_P04_2.pdf
CORFEINE_4587888920140526_2aSE_P04_2.pdfCORFEINE_4587888920140526_2aSE_P04_2.pdf
CORFEINE_4587888920140526_2aSE_P04_2.pdf
 
Presentación sobre la geometría, aplicaciones y ramas
Presentación sobre la geometría, aplicaciones y ramasPresentación sobre la geometría, aplicaciones y ramas
Presentación sobre la geometría, aplicaciones y ramas
 
Diagnóstico Institucional en psicologia.docx
Diagnóstico  Institucional en psicologia.docxDiagnóstico  Institucional en psicologia.docx
Diagnóstico Institucional en psicologia.docx
 
Claves Ipsos numero 29 --- Mayo 2024.pdf
Claves Ipsos numero 29 --- Mayo 2024.pdfClaves Ipsos numero 29 --- Mayo 2024.pdf
Claves Ipsos numero 29 --- Mayo 2024.pdf
 
Presentación Cuenta Pública HLS 2023.pptx
Presentación Cuenta Pública HLS 2023.pptxPresentación Cuenta Pública HLS 2023.pptx
Presentación Cuenta Pública HLS 2023.pptx
 
El narcisismo actualmente en el mundo 2024
El narcisismo actualmente en el mundo 2024El narcisismo actualmente en el mundo 2024
El narcisismo actualmente en el mundo 2024
 
Desarrollo de Habilidades de Pensamiento Informatica
Desarrollo de Habilidades de Pensamiento InformaticaDesarrollo de Habilidades de Pensamiento Informatica
Desarrollo de Habilidades de Pensamiento Informatica
 
Primeros 70 países por IDH ajustado por desigualdad (2024).pdf
Primeros 70 países por IDH ajustado por desigualdad  (2024).pdfPrimeros 70 países por IDH ajustado por desigualdad  (2024).pdf
Primeros 70 países por IDH ajustado por desigualdad (2024).pdf
 
Tecnologia de materiales T01- Agregados.docx (1).pdf
Tecnologia de materiales T01- Agregados.docx (1).pdfTecnologia de materiales T01- Agregados.docx (1).pdf
Tecnologia de materiales T01- Agregados.docx (1).pdf
 
Ojiva porcentual para el análisis de datos
Ojiva porcentual para el análisis de datosOjiva porcentual para el análisis de datos
Ojiva porcentual para el análisis de datos
 
Análisis Datos imprecisos con lógica difusa.pdf
Análisis Datos imprecisos con lógica difusa.pdfAnálisis Datos imprecisos con lógica difusa.pdf
Análisis Datos imprecisos con lógica difusa.pdf
 
Mapa-conceptual-del-Neoclasicismo-4.pptx
Mapa-conceptual-del-Neoclasicismo-4.pptxMapa-conceptual-del-Neoclasicismo-4.pptx
Mapa-conceptual-del-Neoclasicismo-4.pptx
 
Pobreza en el Perú en 2023.pdf practicag
Pobreza en el Perú en 2023.pdf practicagPobreza en el Perú en 2023.pdf practicag
Pobreza en el Perú en 2023.pdf practicag
 
ORIENTACIONES PSIET orientación sobre el pesiet
ORIENTACIONES PSIET orientación sobre el pesietORIENTACIONES PSIET orientación sobre el pesiet
ORIENTACIONES PSIET orientación sobre el pesiet
 
Diapositivas D.I.P.. sobre la importancia que tiene la interpol en Honduraspptx
Diapositivas D.I.P.. sobre la importancia que tiene la interpol en HonduraspptxDiapositivas D.I.P.. sobre la importancia que tiene la interpol en Honduraspptx
Diapositivas D.I.P.. sobre la importancia que tiene la interpol en Honduraspptx
 
Morfofisiopatologia Humana I________ UCS
Morfofisiopatologia Humana I________ UCSMorfofisiopatologia Humana I________ UCS
Morfofisiopatologia Humana I________ UCS
 
Portada De Revista De Ciencia Elegante Moderno Azul y Amarillo.pdf
Portada De Revista De Ciencia Elegante Moderno Azul y Amarillo.pdfPortada De Revista De Ciencia Elegante Moderno Azul y Amarillo.pdf
Portada De Revista De Ciencia Elegante Moderno Azul y Amarillo.pdf
 
RESPUESTAS A PREGUNTAS FRECUENTES SOBRE LA VITIVINICULTURA ARGENTINA.pdf
RESPUESTAS A PREGUNTAS FRECUENTES SOBRE LA VITIVINICULTURA ARGENTINA.pdfRESPUESTAS A PREGUNTAS FRECUENTES SOBRE LA VITIVINICULTURA ARGENTINA.pdf
RESPUESTAS A PREGUNTAS FRECUENTES SOBRE LA VITIVINICULTURA ARGENTINA.pdf
 
TABla de detracciones 123456 antonela tirado 653266666666666
TABla de detracciones 123456 antonela tirado 653266666666666TABla de detracciones 123456 antonela tirado 653266666666666
TABla de detracciones 123456 antonela tirado 653266666666666
 

Elementos avanzados de poo

  • 1. Elementos Avanzados de POO Magister Víctor Andrade Soto
  • 2. Logro Al finalizar la sesión es estudiante empleará eficientemente los conceptos de POO y los asociará con el desarrollo de aplicaciones Java con Netbeans.
  • 3. Utilidad • Conocer las bases del paradigma de desarrollo del software denominado orientación a objetos en general como un metalenguaje de programación • Utilizar como criterio de modularización la identificación de los objetos del dominio de cualquier problema que requiera una solución de objetos • Tener claro que cada módulo de la aplicación software corresponde a un objeto existente en el dominio del problema y en él se incluyen todos los aspectos (funcionalidad, estados, datos, etc.) que son propios del objeto. • Determinar que cuando se aborda una aplicación utilizando el paradigma orientado a objetos la pregunta clave es: ¿Qué objetos constituyen el sistema?
  • 4. Transformación 4 Solución en el computador Problema del mundo real Resultados del problema Formulación en objetos Datos de salida Solución en el mundo real Dominio del problema Representación abstracta del problema Interpretación de los datos salida Dominio de modelado orientado a objetos
  • 5. Ejemplo de aplicación del paradigma OO. • Diseño de la aplicación de control de la puerta de un garaje: • La puerta se abre cuando desde un coche se pulsa un mando. • El motor mueve la puerta para abrirla o cerrarla. • Cuando han transcurrido 10 segundos sin eventos la puerta se cierra. • Si mientras que se está cerrando ocurre un evento de mando u obstáculo se vuelve a abrir • El sistema se apaga coherentemente con un interruptor. 5
  • 7. Claves de las metodología orientadas a objetos. • Abstracción: Busca una definición conceptual común a muchos objetos, tratando de identificar sus características esenciales y agrupándolos por clases. • Encapsulación: define de forma independiente la abstracción o interfaz del módulo y su implementación y estructura interna. • Modularidad: Describe el sistema como conjunto de módulos(objetos) descentralizados y débilmente acoplados. • Herencia: Jerarquiza las clases de acuerdo con afinidades de sus abstracciones. • Tipado: Clasifica los objetos de forma estricta, restringiendo las interacciones a solo aquellas que son coherentes. • Concurrencia: Enfatiza la naturaleza independiente de cada objeto, adjudicándole si procede líneas de control de flujo independientes. • Persistencia: Enfatiza la naturaleza independiente de los objetos, adjudicándole una existencia que sobrepasa a quien lo creó. 7
  • 8. Beneficios de la programación orientada a objetos • Descomponibilidad : Se consigue de forma natural al problema. • Componibilidad y Reusabilidad: Los objetos son reales y se comparten con cualquier otra aplicación del mismo dominio. • Comprensibilidad y consistencia con el dominio del problema: La función y abstracción de un objeto es obvia ya que coincide con la del objeto del dominio real que representa. • Continuidad y estabilidad frente a cambios: La evolución de una aplicación es consecuencia de cambios en los objetos que la componen, y solo afecta a un módulo. • Robustez y protección frente a fallos: Cada objeto se implementa como un ente independiente y los estados de excepción que se puedan generar, pueden ser tratados dentro del propio objeto. • Soporte inherente de la concurrencia: La concurrencia propia de los dominios reales se transfiere de forma natural a la aplicación. • Escalabilidad: La complejidad de la aplicación crece linealmente con la complejidad del problema que se aborda. 8
  • 9. Ambitos de aplicación de la orientación a objetos. Los métodos orientados a objetos son aplicables a todas las fases de desarrollo de una aplicación software. • (OOA) Análisis orientado a objetos: Es un método de análisis que examina los requerimientos desde el punto de vista de las clases y objetos encontrados en el vocabulario del dominio (problema). • (OOD) Diseño orientado a objetos: Es un método de diseñar un programa basado en identificar los módulos de que se compone, mediante componentes que representan conjuntamente los datos y las operaciones de una abstracción. • (OOP) Programación orientada a objetos: Es una forma de expresar un programa basada en construcciones léxicas que se denominan clases y que describen los datos y el comportamiento común de conjuntos de objetos, que cada uno de ellos representa una instancia independiente de la clase. 9
  • 10. Clases y objetos • Las clases son los módulos de diseño que describen el estado y el comportamiento de algún tipo de elemento que constituyen la aplicación (y en OO también algún elemento del problema). • Una clase contiene; • Los atributos que describen la información relativa al objeto que describe la clase. • Los métodos u operaciones que describen el comportamiento de los objetos que describe la clase. • Los objetos o instancias son los módulos de ejecución que constituyen un escenario de análisis o el programa de la aplicación que se ejecuta en un computador. • Los objetos se instancian (construyen) a partir de una clase: • La clase constituyen la plantilla que describe los tipos de datos y la funcionalidad (comportamiento)de los objetos que son instancias suyas. • Los objetos definen los valores concretos de la propiedades definidas en las clases que se asignan a un elemento específico del problema o aplicación. 10
  • 11. Ejemplo de clases y objetos 11 Clases Objetos
  • 12. Atributos de una clase • Son las variables que define la clase para contener la información que requiere cada objetos descritos por ella para describir: • El estado en que se encuentran como consecuencia de su evolución. • Las propiedades de configuración cuando se crean. • Cada atributo tienen definido el tipo de dato, esto es la información que se le puede asignar. Los tipos pueden ser un tipo primitivo (Integer, Float, Boolean, etc.) o la referencia a una clase. • Se puede cualificar la visibilidad (quien puede leer o modificar el valor asignado) de los atributos como públicos o privados: • El valor de un atributos privado sólo puede ser accedido por los métodos del propio objeto. • El valor de los atributos públicos pueden ser también leídos por los métodos de cualquier objetos que tenga la referencia al objeto. • Un buen criterio es declarar los atributos de las clases como privados y definir funciones de acceso si deben ser accedidos externamente. Cuando la clase es sólo un tipo complejo de dato, suelen ser públicos. 12
  • 13. Atributos estáticos • Son variable que contienen información relativa a la clase, o a alguna propiedad relativa al conjunto de las instancias de la clase. • Para acceder a los atributos estáticos, hay que hacer referencia a la clase o a cualquier instancia de la misma. • En la representación UML, los atributos estáticos se representan subrayados, los públicos con un prefijo + y los privados con un prefijo -. 13
  • 14. Métodos (1) • Son funciones y operaciones definidas con referencia a los objetos de una clase. • Los métodos definidos en una clase definen su comportamiento: • Proporcionan información deducible del estado de la instancia a la que se aplica. • Produce cambios del estado de las instancia. • Define operaciones básica, que sirven para construir otras mas complejas. • Crear y construir nuevas instancias. • Cuando se invoca un método puede retornar o no, un valor. Los valores retornados tienen un tipo definido: • Si el tipo retornado es un tipo primitivo, retorna un valor. • Si el tipo retornado es una clase, retorna una referencia a un objeto de la clase. • Los métodos pueden definir parámetros con tipo, a los que se asignan valores cuando se invocan. Los valores de los parámetros son visibles en la implementación del método. • Si el tipo del parámetro es primitivo el valor se pasa por valor. • Si el tipo de parámetro es una clase el valor se pasa por referencia. • Los métodos pueden definirse con visibilidad privada o pública. Los métodos privados sólo pueden ser invocados por métodos del mismo objeto. 14
  • 15. Métodos (2) • El conjunto de métodos públicos ofertados por una clase constituyen la interfaz pública de los objetos de las clases y definen su comportamiento como caja negra. • Los cambios internos de una clase no afecta a las aplicaciones que las usan, siempre que mantenga su interfaz pública. 15
  • 16. Métodos estáticos • Son métodos que tienen acceso sólo a la información estática de la clase y/o a la que recibe a través de los parámetros de invocación, y no al estado propio de cualquier instancia de la clase. • Pueden utilizarse para construir librerías de funciones que procesan la información de los parámetros sin referencia a ningún objeto. • En UML se representan subrayadas. 16
  • 17. Herencia • La herencia es el mecanismo por el que se especializan o extienden la funcionalidad de una clase, diseñando a partir de ella nuevas clases. • La clase A es una extensión de la clase B si es cierto que A es-un B, • Cuando una clase extiende a otra, significa que hereda todo lo definido en ella (atributos y métodos). • La clase que resulta de la extensión puede añadir nuevos elementos (atributos y métodos) a los heredados (Extensión), o modificar su comportamiento (Refinamiento). • Principales usos de la herencia: • Herencia de implementación: La herencia como reutilización de código. Una clase derivada puede heredar comportamiento de una clase base, por tanto, el código no necesita volver a ser escrito para la derivada. • Herencia de interfaz: La herencia como reutilización de conceptos: Esto ocurre cuando una clase derivada sobrescribe el comportamiento definido por la clase base. Aunque no se comparte ese código entre ambas clases, ambas comparten el prototipo del método (comparten el concepto). • La herencia puede ser Simple o Múltiple. 17
  • 19. Clase abstracta e interface • Una clase abstracta es la que representa la parte común de la clases que se derivan de ellas, pero que no representan ningún objeto existente. • Una clase abstracta puede utilizarse como base de herencia, pero no para instanciar objetos. • Una interfaz definen una interfaz pública (conjunto de métodos) sin especificar su implementación. • Cuando una clase implementa una interfaz tiene que incluir en su interfaz pública la declaración de todos los métodos definidos en ella. 19
  • 20. Organización del diseño • El diseño de una aplicación puede requerir la definición de muchas clases. Estas clases se organizan en contenedores que se denominan paquetes. • Algunos paquetes son desarrollados como parte del diseño, pero la mayoría de los paquetes y de las clases son legados (previamente diseñados) e importados en el proyecto de la aplicación. 20
  • 21. Claves de la POO en JAVA Magister Víctor Andrade Soto
  • 22. Wrappers Como sabe, Java usa tipos primitivos, como int o double, para contener los tipos de datos básicos admitidos por el lenguaje. Los tipos primitivos, en lugar de objetos, se utilizan para estas cantidades por el bien del rendimiento. Usar objetos para estos tipos básicos agregaría una sobrecarga inaceptable incluso para los cálculos más simples. Por lo tanto, los tipos primitivos no son parte de la jerarquía de objetos, y no heredan de Object.
  • 23. A pesar del beneficio de rendimiento que ofrecen los tipos primitivos, hay momentos en los que necesitará una representación de objetos. Por ejemplo, no puede pasar un tipo primitivo por referencia a un método. Además, muchas de las estructuras de datos estándar implementadas por Java operan en objetos, lo que significa que no puede usar estas estructuras de datos para almacenar tipos primitivos. Para manejar estas situaciones (y otras), Java proporciona wrappers de tipo, que son clases que encapsulan un tipo primitivo dentro de un objeto. A continuación, analizaremos los wrappers más de cerca.
  • 24. Los envoltorios (wrapper) de tipo son Double, Float, Long, Integer, Short, Byte, Character, y Boolean, que están empaquetados en java.lang. Estas clases ofrecen una amplia gama de métodos que le permiten integrar completamente los tipos primitivos en la jerarquía de objetos de Java.
  • 25. Wrappers de tipo numérico Probablemente las envolturas de tipo más utilizadas son aquellas que representan valores numéricos. Estos son Byte, Short, Integer, Long, Float y Double. Todos los envoltorios de tipo numérico heredan de la clase abstracta Number. Number declara métodos que devuelven el valor de un objeto en cada uno de los diferentes tipos numéricos. Estos métodos se muestran aquí: byte byteValue() double doubleValue() float floatValue() int intValue() long longValue() short shortValue()
  • 26. Por ejemplo, doubleValue() devuelve el valor de un objeto como un double, floatValue() devuelve el valor como un float, y así sucesivamente. Estos métodos son implementados por cada uno de los envoltorios de tipo numérico. Todas las envolturas de tipo numérico definen constructores que permiten que un objeto se construya a partir de un valor dado, o una representación de cadena de ese valor. Por ejemplo, aquí están los constructores definidos para Integer y Double: Integer(int num) Integer(String str) throws NumberFormatException Double(double num) Double(String str) throws NumberFormatException
  • 27. Uso de valueOf() en Wrapper Si str no contiene un valor numérico válido, entonces se lanza un NumberFormatException. Sin embargo, a partir de JDK 9, los constructores wrapper de tipo han quedado obsoletos. Actualmente, se recomienda que use uno de los métodos valueOf() para obtener un objeto wrapper. El método [java]valueOf()[/java] es un miembro estático de todas las clases wrappers y todas las clases numéricas admiten formas que convierten un valor numérico o una cadena en un objeto. Por ejemplo, aquí hay dos formas compatibles con Integer: static Integer valueOf(int val) static Integer valueOf(String valStr) throws NumberFormatException
  • 28. AutoBoxing /UnBoxing Autoboxing Integer intObj = 10; Float floatObj =4.45; Double doubleObj = 3.3; Unboxing int entero = intObj; float flotante = floatObj; Double doble= doubleObj;
  • 34. En su soporte para la encapsulación, la clase proporciona los medios por los que se puede controlar el acceso a los miembros. Aunque el enfoque de Java es un poco más sofisticado, en esencia, hay dos tipos básicos de miembros de la clase: público (public) y privado (private). Se puede acceder libremente a un miembro público mediante un código definido fuera de su clase. Se puede acceder a un miembro privado solo por otros métodos definidos por su clase. Es a través del uso de miembros privados que el acceso está controlado. Restringir el acceso a los miembros de una clase es una parte fundamental de la POO, ya que ayuda a evitar el mal uso de un objeto. Al permitir el acceso a datos privados solo a través de un conjunto de métodos bien definidos, puede evitar que se asignen valores incorrectos a esos datos, por ejemplo, realizando una verificación de rango.
  • 35. • No es posible que el código fuera de la clase establezca el valor de un miembro privado directamente. • También puede controlar con precisión cómo y cuándo se utilizan los datos dentro de un objeto. Por lo tanto, cuando se implementa correctamente, una clase crea una “caja negra” que se puede usar, pero cuyo funcionamiento interno no está abierto a alteraciones. Hasta este punto, no ha tenido que preocuparse por el control de acceso porque Java proporciona una configuración de acceso predeterminada en la que, para los tipos de programas mostrados anteriormente, los miembros de una clase están disponibles libremente para el código en otro programa. (Por lo tanto, para los ejemplos anteriores, la configuración de acceso default es esencialmente public.)
  • 36. Default Cuando no se especifica ningún modificador de acceso para una clase, método o miembro de datos, se dice estar teniendo modificador de acceso default por defecto. Los miembros de datos, clase o métodos que no se declaran utilizando ningún modificador de acceso, es decir, que tengan un modificador de acceso predeterminado, solo son accesibles dentro del mismo paquete. En este ejemplo, crearemos dos paquetes y las clases en los paquetes tendrán los modificadores de acceso predeterminados e intentaremos acceder a una clase de un paquete desde otra clase del segundo paquete.
  • 38. Modificador de acceso Privado El modificador de acceso privado se especifica con la palabra clave [java]private[/java]. Los métodos o los miembros de datos declarados como privados solo son accesibles dentro de la clase en la que se declaran. Cualquier otra clase del mismo paquete no podrá acceder a estos miembros. Las clases e interfaces no se pueden declarar como privadas (private). En este ejemplo, crearemos dos clases A y B dentro del mismo paquete p1. Declararemos un método en la clase A como privado e intentaremos acceder a este método desde la clase B y veremos el resultado.
  • 40. Modificador de acceso protegido (protected) El modificador de acceso protegido se especifica con la palabra clave [java]protected[/java]. Los métodos o miembros de datos declarados como [java]protected[/java] son accesibles dentro del mismo paquete o sub- clases en paquetes diferentes. En este ejemplo, crearemos dos paquetes p1 y p2. La clase A en p1 es public, para acceder a ella desde p2. El método que se muestra en la clase A está protegido y la clase B se hereda de la clase A y, a continuación, se accede a este método protegido creando un objeto de clase B.
  • 42. Modificador de acceso público (public) El modificador de acceso público se especifica con la palabra clave [java]public[/java]. El modificador de acceso público tiene el alcance más amplio entre todos los demás modificadores de acceso. Las clases, métodos o miembros de datos que se declaran como públicos son accesibles desde cualquier lugar del programa. No hay restricciones en el alcance de los miembros de datos públicos.
  • 43. Modificadores que no son de acceso En Java, tenemos 7 modificadores que no son de acceso o, a veces, también llamados especificadores. Se usan con clases, métodos, variables, constructores, etc. para proporcionar información sobre su comportamiento a la JVM. Y son: static final abstract synchronized transient volatile native
  • 44. Herencia La herencia es un pilar importante de OOP (Programación Orientada a Objetos). Es el mecanismo en Java por el cual una clase permite heredar las características (atributos y métodos) de otra clase. Aprenda más a continuación. En el lenguaje de Java, una clase que se hereda se denomina superclase. La clase que hereda se llama subclase. Por lo tanto, una subclase es una versión especializada de una superclase. Hereda todas las variables y métodos definidos por la superclase y agrega sus propios elementos únicos.
  • 46. Terminología importante Superclase: la clase cuyas características se heredan se conoce como superclase (o una clase base o una clase principal). Subclase: la clase que hereda la otra clase se conoce como subclase (o una clase derivada, clase extendida o clase hija). La subclase puede agregar sus propios campos y métodos además de los campos y métodos de la superclase. Reutilización: la herencia respalda el concepto de “reutilización”, es decir, cuando queremos crear una clase nueva y ya hay una clase que incluye parte del código que queremos, podemos derivar nuestra nueva clase de la clase existente. Al hacer esto, estamos reutilizando los campos/atributos y métodos de la clase existente.
  • 47. En el mundo real Vinculado a la Herencia
  • 48. Sobreescritura de Métodos en JAVA En una jerarquía de clases, cuando un método de una subclase tiene el mismo nombre y tipo que un método de su superclase, se dice que el método de la superclase sobrescribe el método de la superclase. Cuando se llama a un método sobrescrito desde una subclase, ésta siempre se refiere a la versión del método definida en la subclase. La versión del método definido por la superclase quedará oculta. Por ejemplo:
  • 52. En programación orientada a objetos, polimorfismo es la capacidad que tienen los objetos de una clase en ofrecer respuesta distinta e independiente en función de los parámetros (diferentes implementaciones) utilizados durante su invocación. Dicho de otro modo el objeto como entidad puede contener valores de diferentes tipos durante la ejecución del programa. En JAVA el término polimorfismo también suele definirse como ‘Sobrecarga de parámetros’, que así de pronto no suena tan divertido pero como veremos más adelante induce a cierta confusión. En realidad suele confundirse con el tipo de poliformismo más común, pero no es del todo exacto usar esta denominación.
  • 53. Ejemplo de Polimorfismo Un ejemplo clásico de poliformismo es el siguiente. Podemos crear dos clases distintas: Gato y Perro, que heredan de la superclase Animal. La clase Animal tiene el método abstracto makesound() que se implementa de forma distinta en cada una de las subclases (gatos y perros suenan de forma distinta). Entonces, un tercer objeto puede enviar el mensaje de hacer sonido a un grupo de objetos Gato y Perro por medio de una variable de referencia de clase Animal, haciendo así un uso polimórfico de dichos objetos respecto del mensaje mover.
  • 54. class Animal { public void makeSound() { System.out.println("Grr..."); } } class Cat extends Animal { public void makeSound() { System.out.println("Meow"); } } class Dog extends Animal { public void makeSound() { System.out.println("Woof"); } }
  • 55. Como todos los objetos Gato y Perro son objetos Animales, podemos hacer lo siguiente public static void main(String[ ] args) { Animal a = new Dog(); Animal b = new Cat(); } Creamos dos variables de referencia de tipo Animal y las apuntamos a los objetos Gato y Perro. Ahora, podemos llamar a los métodos makeSound().
  • 56. a.makeSound(); //Outputs "Woof" b.makeSound(); //Outputs "Meow“ Como decía el polimorfismo, que se refiere a la idea de "tener muchas formas", ocurre cuando hay una jerarquía de clases relacionadas entre sí a través de la herencia y este es un buen ejemplo.
  • 57. Por lo general diremos que existen 3 tipos de polimorfismo: Sobrecarga: El más conocido y se aplica cuando existen funciones con el mismo nombre en clases que son completamente independientes una de la otra. Paramétrico: Existen funciones con el mismo nombre pero se usan diferentes parámetros (nombre o tipo). Se selecciona el método dependiendo del tipo de datos que se envíe. Inclusión: Es cuando se puede llamar a un método sin tener que conocer su tipo, así no se toma en cuenta los detalles de las clases especializadas, utilizando una interfaz común. En líneas generales en lo que se refiere a la POO, la idea fundamental es proveer una funcionalidad predeterminada o común en la clase base y de las clases derivadas se espera que provean una funcionalidad más específica.
  • 58.
  • 59.
  • 60. Super e invocación de métodos sobrescritos
  • 61. InstanceOf El operador instanceof sirve para conocer si un objeto es de un tipo determinado. Por tipo, nos referimos a clase o interfaz (interface), es decir, si el objeto pasaría el test «ES UN» para esa clase o ese interfaz, especificado a la derecha del operador.
  • 62. public class Vehiculos { private String modelo; private String color; // metodos... } public class Coches extends Vehiculos{ private int puertas; public static void main (String[] args){ Coches coche1 = new Coches(); if(coche1 instanceof Vehiculos){ System.out.println("coche1 es un coche y también un vehículo."); } } // métodos... }
  • 63. Práctica: Desarrolle 1 aplicación con formularios que utilice • Herencia • Polimorfismo • Abstracción