SlideShare una empresa de Scribd logo
1 de 29
Introducción a la Programación Orientada a Objetos
Los lenguajes de programación han evolucionado
para brindar mecanismos que le permitan al
programador abstraerse del funcionamiento de los
dispositivos físicos que conforman una
computadora.
En esta evolución un concepto fundamental es el
de encapsulamiento.
Encapsulamiento y Abstracción
El encapsulamiento es un mecanismo que permite
la definición de módulos de software que pueden
ser utilizados como “cajas negras”, esto es,
sabiendo qué hacen sin saber cómo lo hacen.
Introducción a la Programación Orientada a Objetos
El encapsulamiento permite esconder los detalles de
la implementación de un módulo, de modo que sus
clientes sólo conozcan su funcionalidad.
Si cambian la implementación de un módulo, en
tanto no cambie su funcionalidad, los módulos que
lo usan no se verán afectados.
Se reducen así las dependencias entre diferentes
unidades de software, de modo que estos son más
fáciles de leer, verificar y modificar.
Encapsulamiento y Abstracción
Introducción a la Programación Orientada a Objetos
Un lenguaje que soporta encapsulamiento debe
brindar algún mecanismo para que el programador
pueda definir módulos de software independientes.
En Java una clase define un módulo y los
modificadores de acceso permiten establecer el
nivel de encapsulamiento. Los miembros de una
clase que se declaran privados quedan escondidos
y no son visibles desde el exterior.
Cuando un lenguaje permite definir clases y soporta
encapsulamiento el programador puede definir
tipos de datos abstractos.
Encapsulamiento y Abstracción
Introducción a la Programación Orientada a Objetos
Un tipo de dato es un conjunto de valores y un
conjunto de operaciones definidas para estos
valores.
Cuando la representación de los datos y la
implementación de las operaciones están
encapsuladas, el tipo de dato es abstracto.
Un tipo de dato abstracto (TDA) define patrón a
partir del cual es posible crear instancias sin
conocer la representación interna de los valores ni
la implementación de las operaciones.
Tipo de Dato Abstracto
Introducción a la Programación Orientada a Objetos
Float (tipo elemental) y String (tipo clase)
son tipos de datos abstractos, el programador
los usa sin conocer la representación interna de
los valores del tipo ni la implementación (el
código) de las operaciones.
Las variables declaradas de clase String
mantienen una referencia a una cadena de
caracteres.
Tipo de Dato Abstracto
Introducción a la Programación Orientada a Objetos
Diseñe e implemente un tipo de dato abstracto que
permita representar números racionales.
Racional
num : entero
den : entero
Una alternativa es representar a cada número
racional como un par, en donde el primer elemento
es el numerador y el segundo el denominador.
¿Todo número racional puede representarse de
esta manera? ¿Todo par de enteros representan a
un número racional?
Caso de Estudio: TDA Racional
Introducción a la Programación Orientada a Objetos
Caso de Estudio: TDA Racional
Racional
num : entero
den : entero
Requiere d > 0
<<constructor>>
Racional (n,d : entero)
<<comandos>>
establecerNum (n : entero)
establecerDen (d : entero)
El comentario asociado al constructor establece la
responsabilidad de la clase cliente de controlar el valor de un
atributo antes de crear un racional o modificar su
denominador
copy(r : Racional)
Introducción a la Programación Orientada a Objetos
Caso de Estudio: TDA Racional
Racional
num : entero
den : entero
…
<<consultas>>
obtenerNum() : entero
obtenerDen() : entero
equals (r: Racional) :boolean
toString() :String
clone () : Racional
Métodos generales
Introducción a la Programación Orientada a Objetos
Caso de Estudio: TDA Racional
Racional
num : entero
den : entero
…
<<consultas>>
...
suma (rac : Racional) :Racional
resta (rac : Racional) :Racional
producto (rac : Racional) :Racional
cociente (rac : Racional) :Racional
Métodos específicos
Introducción a la Programación Orientada a Objetos
class Racional {
private int num;
private int den;
Caso de Estudio: TDA Racional
Introducción a la Programación Orientada a Objetos
class Racional {
…
// CONSTRUCTOR
public Racional(int n, int d ) {
//Requiere d > 0
num = n;
den = d;
}
Caso de Estudio: TDA Racional
Introducción a la Programación Orientada a Objetos
// COMANDOS
public void establecerNum(int n ) {
num = n;
}
public void establecerDen(int d ) {
//Requiere d > 0
den = d;
}
Caso de Estudio: TDA Racional
Introducción a la Programación Orientada a Objetos
// COMANDOS
…
public void copy(Racional r ) {
num = r.obtenerNum();
den = r.obtenerDen();
}
Caso de Estudio: TDA Racional
Introducción a la Programación Orientada a Objetos
// CONSULTAS
public int obtenerNum() {
return num;
}
public int obtenerDen() {
return den;
}
Caso de Estudio: TDA Racional
Introducción a la Programación Orientada a Objetos
// CONSULTAS
public boolean equals(Racional r){
int rnum = r.obtenerNum();
int rden = r.obtenerDen();
int rmcd = MCD (rnum,rden);
int mcd = MCD (num,den)
return num/mcd == rnum/rmcd &&
den/mcd == rden/rmcd;
}
Caso de Estudio: TDA Racional
Introducción a la Programación Orientada a Objetos
// CONSULTAS
…
public String toString() {
return ( num + "/" + den );
}
public Racional clone (){
Racional r = new Racional(num,den);
return r;
}
public Racional clone (){
return new Racional(num,den);
}
Caso de Estudio: TDA Racional
Introducción a la Programación Orientada a Objetos
public Racional suma( Racional op ) {
int n = num*op.obtenerDen()
+den*op.obtenerNum();
int d = den * op.obtenerDen();
return( new Racional(n, d ) );
}
public Racional resta( Racional op ) {
int n = num*op.obtenerDen()
- den*op.obtenerNum();
int d = den * op.obtenerDen();
Racional s = new Racional(n,d);
return s;
}
Caso de Estudio: TDA Racional
Introducción a la Programación Orientada a Objetos
public Racional resta( Racional op ) {
int n = num*op.obtenerDen()
- den*op.obtenerNum();
int d = den * op.obtenerDen();
return( new Racional(n, d ) );
}
Caso de Estudio: TDA Racional
Introducción a la Programación Orientada a Objetos
public Racional producto( Racional op ) {
return
new Racional(num*op.obtenerNum(),
den*op.obtenerDen());
}
Caso de Estudio: TDA Racional
Introducción a la Programación Orientada a Objetos
Un tipo de dato es un modelo matemático que
especifica un conjunto de valores y un conjunto de
operaciones sobre esos valores.
El encapsulamiento es un mecanismo que permite
dividir los programas en módulos que pueden ser
usados conociendo sólo su interfaz.
Un tipo de dato es abstracto si la representación de
su estado interno y la implementación de sus
operaciones queda encapsulada.
La clase Racional define un tipo de dato abstracto a
partir del cual es posible crear instancias.
Caso de Estudio: TDA Racional
Introducción a la Programación Orientada a Objetos
Antes de usar el TDA Racional en una aplicación
específica debemos verificar que cumple con lo
especificado.
Podemos probar las operaciones en forma interactiva
o definir una clase tester que use a la clase Racional
para verificar sus servicios.
El mismo problema podría diseñarse de manera
diferente, sin modificar la interface ni la funcionalidad
de los servicios. En este caso el mismo tester permite
verificar las dos implementaciones.
Caso de Estudio: TDA Racional
Introducción a la Programación Orientada a Objetos
Caso de Estudio: TDA Racional
Racional
num : entero
den : entero
num y den no
tienen factores
primos comunes
Requiere d > 0
<<constructor>>
Racional (n,d : entero)
<<comandos>>
establecerNum (n : entero)
establecerDen (d : entero)
El comentario asociado al constructor establece un
compromiso respecto a la representación de un racional que
afecta a los comandos
copy(r : Racional)
Introducción a la Programación Orientada a Objetos
Caso de Estudio: TDA Racional
Racional
num : entero
den : entero
…
<<consultas>>
obtenerNum() : entero
obtenerDen() : entero
equals (r: Racional) :boolean
toString() :String
clone () : Racional
Métodos generales
Introducción a la Programación Orientada a Objetos
Caso de Estudio: TDA Racional
Racional
num : entero
den : entero
…
<<consultas>>
...
suma (rac : Racional) :Racional
resta (rac : Racional) :Racional
producto (rac : Racional) :Racional
cociente (rac : Racional) :Racional
Métodos específicos
Introducción a la Programación Orientada a Objetos
class Racional {
private int num;
private int den;
/*num y den no tienen factores primos
comunes*/
// CONSTRUCTOR
public Racional(int n, int d ) {
//Requiere d > 0
int MCD = mcd (n,d);
num = n/MCD;
den = d/MCD;
}
Caso de Estudio: TDA Racional
Introducción a la Programación Orientada a Objetos
// COMANDOS
public void establecerNum(int n ) {
int MCD = mcd (n,den);
num = n/MCD;
den = den/MCD;
}
public void establecerDen(int d ) {
int MCD = mcd (num,d);
num = num/MCD;
den = d/MCD;
}
Caso de Estudio: TDA Racional
Introducción a la Programación Orientada a Objetos
// COMANDOS
…
public void copy(Racional r ) {
num = r.obtenerNum();
den = r.obtenerDen();
}
Caso de Estudio: TDA Racional
Introducción a la Programación Orientada a Objetos
// CONSULTAS
public int obtenerNum() {
return num;
}
public int obtenerDen() {
return den;
}
Caso de Estudio: TDA Racional
Introducción a la Programación Orientada a Objetos
// CONSULTAS
public boolean equals(Racional r){
return num == r.obtenerNum()&&
den == r.obtenerDen();
}
public String toString() {
return ( num + "/" + den );
}
public Racional clone (){
Racional r =
new Racional(num,den);
return r;
}
Caso de Estudio: TDA Racional

Más contenido relacionado

Similar a Abstracción y Encapsulación de en la programación Orientada a objetos

Introducción poo
Introducción pooIntroducción poo
Introducción poog_torrealba
 
principales datos simples
principales datos simplesprincipales datos simples
principales datos simplesedgarcr717
 
1.2 Presentación paquetes y funciones en R Primer apellido_Primer nombre.pptx
1.2 Presentación paquetes y funciones en R Primer apellido_Primer nombre.pptx1.2 Presentación paquetes y funciones en R Primer apellido_Primer nombre.pptx
1.2 Presentación paquetes y funciones en R Primer apellido_Primer nombre.pptxJOSEDCMERCADOBETANCO
 
Algoritmos2 130608173848-phpapp01
Algoritmos2 130608173848-phpapp01Algoritmos2 130608173848-phpapp01
Algoritmos2 130608173848-phpapp01DiegoDeluque95
 
Lo básico para programar
Lo básico para programarLo básico para programar
Lo básico para programarCelestino Duran
 
Guia examen diagnostico_pseint
Guia examen diagnostico_pseintGuia examen diagnostico_pseint
Guia examen diagnostico_pseintLeidyEspinoza6
 
Tipos abstractos de datos
Tipos abstractos de datosTipos abstractos de datos
Tipos abstractos de datosJose Armando
 
Curso de R: 1.1. introducción al lenguaje (Objetos y operadores básicos)
Curso de R: 1.1. introducción al lenguaje (Objetos y operadores básicos)Curso de R: 1.1. introducción al lenguaje (Objetos y operadores básicos)
Curso de R: 1.1. introducción al lenguaje (Objetos y operadores básicos)Nerys Ramírez Mordán
 
Programacion orientada ojetos
Programacion orientada  ojetosProgramacion orientada  ojetos
Programacion orientada ojetosChikio Edu
 
Algoritmos y clase
Algoritmos y claseAlgoritmos y clase
Algoritmos y clasedaosma
 
Clases 2 dfd y basico 2011
Clases 2  dfd y basico 2011Clases 2  dfd y basico 2011
Clases 2 dfd y basico 2011seolivares
 
Lo básico para programar
Lo básico para programarLo básico para programar
Lo básico para programarCelestino Duran
 
ESTRUCTURA DE DATOS
ESTRUCTURA DE DATOSESTRUCTURA DE DATOS
ESTRUCTURA DE DATOSIsai Vazquez
 

Similar a Abstracción y Encapsulación de en la programación Orientada a objetos (20)

Introducción poo
Introducción pooIntroducción poo
Introducción poo
 
1.1 tda
1.1 tda1.1 tda
1.1 tda
 
principales datos simples
principales datos simplesprincipales datos simples
principales datos simples
 
1.2 Presentación paquetes y funciones en R Primer apellido_Primer nombre.pptx
1.2 Presentación paquetes y funciones en R Primer apellido_Primer nombre.pptx1.2 Presentación paquetes y funciones en R Primer apellido_Primer nombre.pptx
1.2 Presentación paquetes y funciones en R Primer apellido_Primer nombre.pptx
 
Algoritmos2 130608173848-phpapp01
Algoritmos2 130608173848-phpapp01Algoritmos2 130608173848-phpapp01
Algoritmos2 130608173848-phpapp01
 
Lo básico para programar
Lo básico para programarLo básico para programar
Lo básico para programar
 
Guia examen diagnostico_pseint
Guia examen diagnostico_pseintGuia examen diagnostico_pseint
Guia examen diagnostico_pseint
 
Tipos abstractos de datos
Tipos abstractos de datosTipos abstractos de datos
Tipos abstractos de datos
 
Algoritsmos unefa
Algoritsmos unefaAlgoritsmos unefa
Algoritsmos unefa
 
Curso de R: 1.1. introducción al lenguaje (Objetos y operadores básicos)
Curso de R: 1.1. introducción al lenguaje (Objetos y operadores básicos)Curso de R: 1.1. introducción al lenguaje (Objetos y operadores básicos)
Curso de R: 1.1. introducción al lenguaje (Objetos y operadores básicos)
 
1 eda teo
1 eda teo1 eda teo
1 eda teo
 
Tipos de datos abstractos
Tipos de datos abstractosTipos de datos abstractos
Tipos de datos abstractos
 
PROGRAMACIÓN WEB INTRODUCCIÓN
PROGRAMACIÓN WEB INTRODUCCIÓNPROGRAMACIÓN WEB INTRODUCCIÓN
PROGRAMACIÓN WEB INTRODUCCIÓN
 
Programacion orientada ojetos
Programacion orientada  ojetosProgramacion orientada  ojetos
Programacion orientada ojetos
 
Algoritmos y clase
Algoritmos y claseAlgoritmos y clase
Algoritmos y clase
 
Clases 2 dfd y basico 2011
Clases 2  dfd y basico 2011Clases 2  dfd y basico 2011
Clases 2 dfd y basico 2011
 
INTRODUCCION A LA POO
INTRODUCCION A LA POOINTRODUCCION A LA POO
INTRODUCCION A LA POO
 
Lo básico para programar
Lo básico para programarLo básico para programar
Lo básico para programar
 
Taller 2 conceptualizacion
Taller 2 conceptualizacionTaller 2 conceptualizacion
Taller 2 conceptualizacion
 
ESTRUCTURA DE DATOS
ESTRUCTURA DE DATOSESTRUCTURA DE DATOS
ESTRUCTURA DE DATOS
 

Más de JoseEstebanTelloEstr

Ingeniería de Software y Usabilidad Web.
Ingeniería de Software y Usabilidad Web.Ingeniería de Software y Usabilidad Web.
Ingeniería de Software y Usabilidad Web.JoseEstebanTelloEstr
 
Informatica aplicada a los negocios y al ecommerce
Informatica aplicada a los negocios y al ecommerceInformatica aplicada a los negocios y al ecommerce
Informatica aplicada a los negocios y al ecommerceJoseEstebanTelloEstr
 
CRM implementación de un crm en comercio electrónico
CRM implementación de un crm en comercio electrónicoCRM implementación de un crm en comercio electrónico
CRM implementación de un crm en comercio electrónicoJoseEstebanTelloEstr
 
2-Estrategia-Digital-Nacional-2014.pdf
2-Estrategia-Digital-Nacional-2014.pdf2-Estrategia-Digital-Nacional-2014.pdf
2-Estrategia-Digital-Nacional-2014.pdfJoseEstebanTelloEstr
 
Calandra_Pedro_Conociendo_los_TIC.pdf
Calandra_Pedro_Conociendo_los_TIC.pdfCalandra_Pedro_Conociendo_los_TIC.pdf
Calandra_Pedro_Conociendo_los_TIC.pdfJoseEstebanTelloEstr
 

Más de JoseEstebanTelloEstr (7)

Ingeniería de Software y Usabilidad Web.
Ingeniería de Software y Usabilidad Web.Ingeniería de Software y Usabilidad Web.
Ingeniería de Software y Usabilidad Web.
 
Informatica aplicada a los negocios y al ecommerce
Informatica aplicada a los negocios y al ecommerceInformatica aplicada a los negocios y al ecommerce
Informatica aplicada a los negocios y al ecommerce
 
CRM implementación de un crm en comercio electrónico
CRM implementación de un crm en comercio electrónicoCRM implementación de un crm en comercio electrónico
CRM implementación de un crm en comercio electrónico
 
4727404.ppt
4727404.ppt4727404.ppt
4727404.ppt
 
2-Estrategia-Digital-Nacional-2014.pdf
2-Estrategia-Digital-Nacional-2014.pdf2-Estrategia-Digital-Nacional-2014.pdf
2-Estrategia-Digital-Nacional-2014.pdf
 
Calandra_Pedro_Conociendo_los_TIC.pdf
Calandra_Pedro_Conociendo_los_TIC.pdfCalandra_Pedro_Conociendo_los_TIC.pdf
Calandra_Pedro_Conociendo_los_TIC.pdf
 
Prog oo con_java
Prog oo con_javaProg oo con_java
Prog oo con_java
 

Último

DIPLOMA DE CERTIFICADO EQQW_removed.pptx
DIPLOMA DE CERTIFICADO EQQW_removed.pptxDIPLOMA DE CERTIFICADO EQQW_removed.pptx
DIPLOMA DE CERTIFICADO EQQW_removed.pptxKaterin yanac tello
 
LA LEY DE LAS XII TABLAS en el curso de derecho
LA LEY DE LAS XII TABLAS en el curso de derechoLA LEY DE LAS XII TABLAS en el curso de derecho
LA LEY DE LAS XII TABLAS en el curso de derechojuliosabino1
 
2024 2024 202420242024PPT SESIÓN 03.pptx
2024 2024 202420242024PPT SESIÓN 03.pptx2024 2024 202420242024PPT SESIÓN 03.pptx
2024 2024 202420242024PPT SESIÓN 03.pptxccordovato
 
Análisis de un mapa de riesgos de una tortillería
Análisis de un mapa de riesgos de una tortillería Análisis de un mapa de riesgos de una tortillería
Análisis de un mapa de riesgos de una tortillería yocelynsanchezerasmo
 
Mapa de riesgos de un taller mecánico 405
Mapa de riesgos de un taller mecánico 405Mapa de riesgos de un taller mecánico 405
Mapa de riesgos de un taller mecánico 405rodrimarxim
 
Presentación informe 'Fondos Next Generation European Union destinados a actu...
Presentación informe 'Fondos Next Generation European Union destinados a actu...Presentación informe 'Fondos Next Generation European Union destinados a actu...
Presentación informe 'Fondos Next Generation European Union destinados a actu...Ivie
 
que son los planes de ordenamiento predial POP.pptx
que son los planes de ordenamiento predial  POP.pptxque son los planes de ordenamiento predial  POP.pptx
que son los planes de ordenamiento predial POP.pptxSergiothaine2
 
17 PRACTICAS - MODALIDAAD FAMILIAAR.docx
17 PRACTICAS - MODALIDAAD FAMILIAAR.docx17 PRACTICAS - MODALIDAAD FAMILIAAR.docx
17 PRACTICAS - MODALIDAAD FAMILIAAR.docxmarthaarroyo16
 
PREGUNTA J DE CONSULTA POPULAR 21 DE ABRIL
PREGUNTA J DE CONSULTA POPULAR 21 DE ABRILPREGUNTA J DE CONSULTA POPULAR 21 DE ABRIL
PREGUNTA J DE CONSULTA POPULAR 21 DE ABRILeluniversocom
 
PREGUNTA K DE LA CONSULTA POPULAR 21 DE ABRIL
PREGUNTA K DE LA CONSULTA POPULAR 21 DE ABRILPREGUNTA K DE LA CONSULTA POPULAR 21 DE ABRIL
PREGUNTA K DE LA CONSULTA POPULAR 21 DE ABRILeluniversocom
 
REPORTE DE INCIDENCIA DELICTIVA MARZO 2024.pdf
REPORTE DE INCIDENCIA DELICTIVA MARZO 2024.pdfREPORTE DE INCIDENCIA DELICTIVA MARZO 2024.pdf
REPORTE DE INCIDENCIA DELICTIVA MARZO 2024.pdfIrapuatoCmovamos
 
El sistema solar el gran descubrimiento del sistema solar .pptx
El sistema solar el gran descubrimiento del sistema solar .pptxEl sistema solar el gran descubrimiento del sistema solar .pptx
El sistema solar el gran descubrimiento del sistema solar .pptxYoladsCabarcasTous
 
REPORTE-HEMEROGRÁFICO-MARZO-2024-IRAPUATO-¿CÓMO VAMOS?.pdf
REPORTE-HEMEROGRÁFICO-MARZO-2024-IRAPUATO-¿CÓMO VAMOS?.pdfREPORTE-HEMEROGRÁFICO-MARZO-2024-IRAPUATO-¿CÓMO VAMOS?.pdf
REPORTE-HEMEROGRÁFICO-MARZO-2024-IRAPUATO-¿CÓMO VAMOS?.pdfIrapuatoCmovamos
 
Módulo mapa de riesgos de tienda de abarrotes
Módulo mapa de riesgos de tienda de abarrotesMódulo mapa de riesgos de tienda de abarrotes
Módulo mapa de riesgos de tienda de abarrotessald071205mmcnrna9
 
CUESTIONARIO A ADICCION A REDES SOCIALES.pdf
CUESTIONARIO A ADICCION A REDES SOCIALES.pdfCUESTIONARIO A ADICCION A REDES SOCIALES.pdf
CUESTIONARIO A ADICCION A REDES SOCIALES.pdfEDUARDO MAMANI MAMANI
 
tipos de organización y sus objetivos y aplicación
tipos de organización y sus objetivos y aplicacióntipos de organización y sus objetivos y aplicación
tipos de organización y sus objetivos y aplicaciónJonathanAntonioMaldo
 
ESTUDIO DE IMPACTO AMBIENTAL de explotación minera.pptx
ESTUDIO DE IMPACTO AMBIENTAL de  explotación minera.pptxESTUDIO DE IMPACTO AMBIENTAL de  explotación minera.pptx
ESTUDIO DE IMPACTO AMBIENTAL de explotación minera.pptxKatherineFabianLoza1
 
HABILESASAMBLEA Para negocios independientes.pdf
HABILESASAMBLEA Para negocios independientes.pdfHABILESASAMBLEA Para negocios independientes.pdf
HABILESASAMBLEA Para negocios independientes.pdfGEINER22
 
Niveles de organización biologica clase de biologia
Niveles de organización biologica clase de biologiaNiveles de organización biologica clase de biologia
Niveles de organización biologica clase de biologiatongailustraconcienc
 
Croquis de riesgo de trabajo gasolinera.pdf
Croquis de riesgo de trabajo gasolinera.pdfCroquis de riesgo de trabajo gasolinera.pdf
Croquis de riesgo de trabajo gasolinera.pdfhernestosoto82
 

Último (20)

DIPLOMA DE CERTIFICADO EQQW_removed.pptx
DIPLOMA DE CERTIFICADO EQQW_removed.pptxDIPLOMA DE CERTIFICADO EQQW_removed.pptx
DIPLOMA DE CERTIFICADO EQQW_removed.pptx
 
LA LEY DE LAS XII TABLAS en el curso de derecho
LA LEY DE LAS XII TABLAS en el curso de derechoLA LEY DE LAS XII TABLAS en el curso de derecho
LA LEY DE LAS XII TABLAS en el curso de derecho
 
2024 2024 202420242024PPT SESIÓN 03.pptx
2024 2024 202420242024PPT SESIÓN 03.pptx2024 2024 202420242024PPT SESIÓN 03.pptx
2024 2024 202420242024PPT SESIÓN 03.pptx
 
Análisis de un mapa de riesgos de una tortillería
Análisis de un mapa de riesgos de una tortillería Análisis de un mapa de riesgos de una tortillería
Análisis de un mapa de riesgos de una tortillería
 
Mapa de riesgos de un taller mecánico 405
Mapa de riesgos de un taller mecánico 405Mapa de riesgos de un taller mecánico 405
Mapa de riesgos de un taller mecánico 405
 
Presentación informe 'Fondos Next Generation European Union destinados a actu...
Presentación informe 'Fondos Next Generation European Union destinados a actu...Presentación informe 'Fondos Next Generation European Union destinados a actu...
Presentación informe 'Fondos Next Generation European Union destinados a actu...
 
que son los planes de ordenamiento predial POP.pptx
que son los planes de ordenamiento predial  POP.pptxque son los planes de ordenamiento predial  POP.pptx
que son los planes de ordenamiento predial POP.pptx
 
17 PRACTICAS - MODALIDAAD FAMILIAAR.docx
17 PRACTICAS - MODALIDAAD FAMILIAAR.docx17 PRACTICAS - MODALIDAAD FAMILIAAR.docx
17 PRACTICAS - MODALIDAAD FAMILIAAR.docx
 
PREGUNTA J DE CONSULTA POPULAR 21 DE ABRIL
PREGUNTA J DE CONSULTA POPULAR 21 DE ABRILPREGUNTA J DE CONSULTA POPULAR 21 DE ABRIL
PREGUNTA J DE CONSULTA POPULAR 21 DE ABRIL
 
PREGUNTA K DE LA CONSULTA POPULAR 21 DE ABRIL
PREGUNTA K DE LA CONSULTA POPULAR 21 DE ABRILPREGUNTA K DE LA CONSULTA POPULAR 21 DE ABRIL
PREGUNTA K DE LA CONSULTA POPULAR 21 DE ABRIL
 
REPORTE DE INCIDENCIA DELICTIVA MARZO 2024.pdf
REPORTE DE INCIDENCIA DELICTIVA MARZO 2024.pdfREPORTE DE INCIDENCIA DELICTIVA MARZO 2024.pdf
REPORTE DE INCIDENCIA DELICTIVA MARZO 2024.pdf
 
El sistema solar el gran descubrimiento del sistema solar .pptx
El sistema solar el gran descubrimiento del sistema solar .pptxEl sistema solar el gran descubrimiento del sistema solar .pptx
El sistema solar el gran descubrimiento del sistema solar .pptx
 
REPORTE-HEMEROGRÁFICO-MARZO-2024-IRAPUATO-¿CÓMO VAMOS?.pdf
REPORTE-HEMEROGRÁFICO-MARZO-2024-IRAPUATO-¿CÓMO VAMOS?.pdfREPORTE-HEMEROGRÁFICO-MARZO-2024-IRAPUATO-¿CÓMO VAMOS?.pdf
REPORTE-HEMEROGRÁFICO-MARZO-2024-IRAPUATO-¿CÓMO VAMOS?.pdf
 
Módulo mapa de riesgos de tienda de abarrotes
Módulo mapa de riesgos de tienda de abarrotesMódulo mapa de riesgos de tienda de abarrotes
Módulo mapa de riesgos de tienda de abarrotes
 
CUESTIONARIO A ADICCION A REDES SOCIALES.pdf
CUESTIONARIO A ADICCION A REDES SOCIALES.pdfCUESTIONARIO A ADICCION A REDES SOCIALES.pdf
CUESTIONARIO A ADICCION A REDES SOCIALES.pdf
 
tipos de organización y sus objetivos y aplicación
tipos de organización y sus objetivos y aplicacióntipos de organización y sus objetivos y aplicación
tipos de organización y sus objetivos y aplicación
 
ESTUDIO DE IMPACTO AMBIENTAL de explotación minera.pptx
ESTUDIO DE IMPACTO AMBIENTAL de  explotación minera.pptxESTUDIO DE IMPACTO AMBIENTAL de  explotación minera.pptx
ESTUDIO DE IMPACTO AMBIENTAL de explotación minera.pptx
 
HABILESASAMBLEA Para negocios independientes.pdf
HABILESASAMBLEA Para negocios independientes.pdfHABILESASAMBLEA Para negocios independientes.pdf
HABILESASAMBLEA Para negocios independientes.pdf
 
Niveles de organización biologica clase de biologia
Niveles de organización biologica clase de biologiaNiveles de organización biologica clase de biologia
Niveles de organización biologica clase de biologia
 
Croquis de riesgo de trabajo gasolinera.pdf
Croquis de riesgo de trabajo gasolinera.pdfCroquis de riesgo de trabajo gasolinera.pdf
Croquis de riesgo de trabajo gasolinera.pdf
 

Abstracción y Encapsulación de en la programación Orientada a objetos

  • 1. Introducción a la Programación Orientada a Objetos Los lenguajes de programación han evolucionado para brindar mecanismos que le permitan al programador abstraerse del funcionamiento de los dispositivos físicos que conforman una computadora. En esta evolución un concepto fundamental es el de encapsulamiento. Encapsulamiento y Abstracción El encapsulamiento es un mecanismo que permite la definición de módulos de software que pueden ser utilizados como “cajas negras”, esto es, sabiendo qué hacen sin saber cómo lo hacen.
  • 2. Introducción a la Programación Orientada a Objetos El encapsulamiento permite esconder los detalles de la implementación de un módulo, de modo que sus clientes sólo conozcan su funcionalidad. Si cambian la implementación de un módulo, en tanto no cambie su funcionalidad, los módulos que lo usan no se verán afectados. Se reducen así las dependencias entre diferentes unidades de software, de modo que estos son más fáciles de leer, verificar y modificar. Encapsulamiento y Abstracción
  • 3. Introducción a la Programación Orientada a Objetos Un lenguaje que soporta encapsulamiento debe brindar algún mecanismo para que el programador pueda definir módulos de software independientes. En Java una clase define un módulo y los modificadores de acceso permiten establecer el nivel de encapsulamiento. Los miembros de una clase que se declaran privados quedan escondidos y no son visibles desde el exterior. Cuando un lenguaje permite definir clases y soporta encapsulamiento el programador puede definir tipos de datos abstractos. Encapsulamiento y Abstracción
  • 4. Introducción a la Programación Orientada a Objetos Un tipo de dato es un conjunto de valores y un conjunto de operaciones definidas para estos valores. Cuando la representación de los datos y la implementación de las operaciones están encapsuladas, el tipo de dato es abstracto. Un tipo de dato abstracto (TDA) define patrón a partir del cual es posible crear instancias sin conocer la representación interna de los valores ni la implementación de las operaciones. Tipo de Dato Abstracto
  • 5. Introducción a la Programación Orientada a Objetos Float (tipo elemental) y String (tipo clase) son tipos de datos abstractos, el programador los usa sin conocer la representación interna de los valores del tipo ni la implementación (el código) de las operaciones. Las variables declaradas de clase String mantienen una referencia a una cadena de caracteres. Tipo de Dato Abstracto
  • 6. Introducción a la Programación Orientada a Objetos Diseñe e implemente un tipo de dato abstracto que permita representar números racionales. Racional num : entero den : entero Una alternativa es representar a cada número racional como un par, en donde el primer elemento es el numerador y el segundo el denominador. ¿Todo número racional puede representarse de esta manera? ¿Todo par de enteros representan a un número racional? Caso de Estudio: TDA Racional
  • 7. Introducción a la Programación Orientada a Objetos Caso de Estudio: TDA Racional Racional num : entero den : entero Requiere d > 0 <<constructor>> Racional (n,d : entero) <<comandos>> establecerNum (n : entero) establecerDen (d : entero) El comentario asociado al constructor establece la responsabilidad de la clase cliente de controlar el valor de un atributo antes de crear un racional o modificar su denominador copy(r : Racional)
  • 8. Introducción a la Programación Orientada a Objetos Caso de Estudio: TDA Racional Racional num : entero den : entero … <<consultas>> obtenerNum() : entero obtenerDen() : entero equals (r: Racional) :boolean toString() :String clone () : Racional Métodos generales
  • 9. Introducción a la Programación Orientada a Objetos Caso de Estudio: TDA Racional Racional num : entero den : entero … <<consultas>> ... suma (rac : Racional) :Racional resta (rac : Racional) :Racional producto (rac : Racional) :Racional cociente (rac : Racional) :Racional Métodos específicos
  • 10. Introducción a la Programación Orientada a Objetos class Racional { private int num; private int den; Caso de Estudio: TDA Racional
  • 11. Introducción a la Programación Orientada a Objetos class Racional { … // CONSTRUCTOR public Racional(int n, int d ) { //Requiere d > 0 num = n; den = d; } Caso de Estudio: TDA Racional
  • 12. Introducción a la Programación Orientada a Objetos // COMANDOS public void establecerNum(int n ) { num = n; } public void establecerDen(int d ) { //Requiere d > 0 den = d; } Caso de Estudio: TDA Racional
  • 13. Introducción a la Programación Orientada a Objetos // COMANDOS … public void copy(Racional r ) { num = r.obtenerNum(); den = r.obtenerDen(); } Caso de Estudio: TDA Racional
  • 14. Introducción a la Programación Orientada a Objetos // CONSULTAS public int obtenerNum() { return num; } public int obtenerDen() { return den; } Caso de Estudio: TDA Racional
  • 15. Introducción a la Programación Orientada a Objetos // CONSULTAS public boolean equals(Racional r){ int rnum = r.obtenerNum(); int rden = r.obtenerDen(); int rmcd = MCD (rnum,rden); int mcd = MCD (num,den) return num/mcd == rnum/rmcd && den/mcd == rden/rmcd; } Caso de Estudio: TDA Racional
  • 16. Introducción a la Programación Orientada a Objetos // CONSULTAS … public String toString() { return ( num + "/" + den ); } public Racional clone (){ Racional r = new Racional(num,den); return r; } public Racional clone (){ return new Racional(num,den); } Caso de Estudio: TDA Racional
  • 17. Introducción a la Programación Orientada a Objetos public Racional suma( Racional op ) { int n = num*op.obtenerDen() +den*op.obtenerNum(); int d = den * op.obtenerDen(); return( new Racional(n, d ) ); } public Racional resta( Racional op ) { int n = num*op.obtenerDen() - den*op.obtenerNum(); int d = den * op.obtenerDen(); Racional s = new Racional(n,d); return s; } Caso de Estudio: TDA Racional
  • 18. Introducción a la Programación Orientada a Objetos public Racional resta( Racional op ) { int n = num*op.obtenerDen() - den*op.obtenerNum(); int d = den * op.obtenerDen(); return( new Racional(n, d ) ); } Caso de Estudio: TDA Racional
  • 19. Introducción a la Programación Orientada a Objetos public Racional producto( Racional op ) { return new Racional(num*op.obtenerNum(), den*op.obtenerDen()); } Caso de Estudio: TDA Racional
  • 20. Introducción a la Programación Orientada a Objetos Un tipo de dato es un modelo matemático que especifica un conjunto de valores y un conjunto de operaciones sobre esos valores. El encapsulamiento es un mecanismo que permite dividir los programas en módulos que pueden ser usados conociendo sólo su interfaz. Un tipo de dato es abstracto si la representación de su estado interno y la implementación de sus operaciones queda encapsulada. La clase Racional define un tipo de dato abstracto a partir del cual es posible crear instancias. Caso de Estudio: TDA Racional
  • 21. Introducción a la Programación Orientada a Objetos Antes de usar el TDA Racional en una aplicación específica debemos verificar que cumple con lo especificado. Podemos probar las operaciones en forma interactiva o definir una clase tester que use a la clase Racional para verificar sus servicios. El mismo problema podría diseñarse de manera diferente, sin modificar la interface ni la funcionalidad de los servicios. En este caso el mismo tester permite verificar las dos implementaciones. Caso de Estudio: TDA Racional
  • 22. Introducción a la Programación Orientada a Objetos Caso de Estudio: TDA Racional Racional num : entero den : entero num y den no tienen factores primos comunes Requiere d > 0 <<constructor>> Racional (n,d : entero) <<comandos>> establecerNum (n : entero) establecerDen (d : entero) El comentario asociado al constructor establece un compromiso respecto a la representación de un racional que afecta a los comandos copy(r : Racional)
  • 23. Introducción a la Programación Orientada a Objetos Caso de Estudio: TDA Racional Racional num : entero den : entero … <<consultas>> obtenerNum() : entero obtenerDen() : entero equals (r: Racional) :boolean toString() :String clone () : Racional Métodos generales
  • 24. Introducción a la Programación Orientada a Objetos Caso de Estudio: TDA Racional Racional num : entero den : entero … <<consultas>> ... suma (rac : Racional) :Racional resta (rac : Racional) :Racional producto (rac : Racional) :Racional cociente (rac : Racional) :Racional Métodos específicos
  • 25. Introducción a la Programación Orientada a Objetos class Racional { private int num; private int den; /*num y den no tienen factores primos comunes*/ // CONSTRUCTOR public Racional(int n, int d ) { //Requiere d > 0 int MCD = mcd (n,d); num = n/MCD; den = d/MCD; } Caso de Estudio: TDA Racional
  • 26. Introducción a la Programación Orientada a Objetos // COMANDOS public void establecerNum(int n ) { int MCD = mcd (n,den); num = n/MCD; den = den/MCD; } public void establecerDen(int d ) { int MCD = mcd (num,d); num = num/MCD; den = d/MCD; } Caso de Estudio: TDA Racional
  • 27. Introducción a la Programación Orientada a Objetos // COMANDOS … public void copy(Racional r ) { num = r.obtenerNum(); den = r.obtenerDen(); } Caso de Estudio: TDA Racional
  • 28. Introducción a la Programación Orientada a Objetos // CONSULTAS public int obtenerNum() { return num; } public int obtenerDen() { return den; } Caso de Estudio: TDA Racional
  • 29. Introducción a la Programación Orientada a Objetos // CONSULTAS public boolean equals(Racional r){ return num == r.obtenerNum()&& den == r.obtenerDen(); } public String toString() { return ( num + "/" + den ); } public Racional clone (){ Racional r = new Racional(num,den); return r; } Caso de Estudio: TDA Racional