Encapsulamiento y Abstracción

Slides:



Advertisements
Presentaciones similares
Curso de java básico (scjp)
Advertisements

Curso de Java Capitulo 7: Conceptos sobre poo Profesor:
Herencia en C#.
Lenguaje de programación Java
Arquitectura CLARO-TECNOTREE
Defina una clase TempMinEstacion que encapsule la representación de las temperaturas mínimas registradas en una estación meteorológica en un período y.
Tipos de Datos Abstractos Vector de Racionales
Programación Orientada a Objetos
El proceso de desarrollo de software
El Proceso de desarrollo de software
Problema abstracción DATOS ACCIONES Problemas y Programas Programa.
El proceso de desarrollo de software
Abstracciones y Modelos
Reusabilidad La productividad está basada en reusabilidad y extensibilidad El reusabilidad permite desarrollar nuevas aplicaciones a partir de componentes.
El proceso de desarrollo de software
La Programación Orientado a Objetos
1.1 Concepto de Tipo de Datos Abstracto.
Tipos de Datos Abstractos Modularidad
Tipo de Dato Abstracto Tipos de datos:
UNIVERSIDAD LATINA (UNILA) ENCAPSULACION Y HERENCIA
Aplicación del paradigma orientado a objetos
Diseño y programación de
Abstracción de Datos La abstracción es un recurso fundamental en la programación orientada a objetos y está además fuertemente ligado a reusabilidad.
El concepto de clase Con frecuencia un término puede definirse de diferentes maneras según el enfoque. Desde el punto de vista del análisis y el diseño.
Genericidad Una clase genérica encapsula una estructura y brinda un conjunto de servicios cuya implementación no depende del tipo de las componentes.
Genericidad Los datos de aplicaciones muy diferentes puede modelarse con frecuencia a partir de tipos de datos cuyas operaciones no dependen del tipo de.
PROGRAMACIÓN EN JAVA Curso-taller inicial de programación en JAVA Facultad de Estadística e Informática TEMA II.
Tema 7: Polimorfismo Antonio J. Sierra. Índice Introducción. Sobrecarga de métodos. Objetos como parámetros. Paso de argumentos. Devolución de objetos.
TALLER DE PROGRAMACIÓN III
UNIVERSIDAD TECNOLÓGICA DE HERMOSILLO T.S.U. EN T.I.C., Área: Sistemas Informáticos Ing. José Padilla Duarte y estudiantes de Sistemas Informáticos Hermosillo,
Clases y objetos La unidad fundamental de programación OO son las clases. Conjunto de métodos y semántica Qué se va a hacer POO Clase: que define la implementación.
Universidad Autónoma del Estado de Hidalgo Instituto de Ciencias Básicas e Ingeniería Área Académica de Computación y Electrónica Licenciatura en Ciencias.
UNIDAD 2 CLASES Y OBJETOS. CLASE Elementos cabecera y cuerpo de la clase. Cabecera: aporta información fundamental sobre la clase en sí y constituye de.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Objetos.
TIPOS DE DATOS ABSTRACTOS
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Encapsulamiento.
Programación Orientada a Objetos usando CONSTRUCTORES DESTRUCTORES.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Encapsulamiento.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Clases.
Ivette C. Martínez - Héctor Palacios Java – Modulo 1 Introducción y Fundamentos del lenguaje de programación Java.
Herencia. Introducción La idea básica es poder crear clases basadas en clases ya existentes. Cuando heredamos de una clase existente, estamos re-usando.
Introducción a la Programación Orientada a Objetos VRacional Racional [] arreglo > VRacional (max : entero) > establecerElem (pos : entero, elem : Racional)
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Genericidad.
Programación Orientada a Objeto
Detalles Generales sobre Java
PROGRAMACIÓN ORIENTADA A OBJETOS Unidad 1 GENERICIDAD
Introducción a la Programación Orientada a Objetos Una clase que modela los atributos y el comportamiento de una colección de objetos, define un tipo de.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Arreglo.
Ing. Esp. Ricardo Cujar.  Lenguaje de programación orientado a objetos.  Desarrollado por Sun MicroSystems.  Independiente del Sistema Operativo gracias.
Universidad Tecnológica de Izúcar de Matamoros Programa Educativo: Tecnologías de la Información Asignatura: Base de datos para aplicaciones Tema: Base.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Abstracción.
Introducción a la Programación Orientada a Objetos Arreglos de 2 dimensiones TDA Matriz Implementar un TDA Matriz que brinde operaciones para calcular.
Introducción a la Programación Orientada a Objetos Sonia Rueda
Abstracción El concepto de abstracción es esencial en ciencias de la computación. Un programa es en sí mismo una abstracción, un modelo de la resolución.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Caso.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Tipo.
Programación Orientada a Objetos: CLASES Y OBJETOS
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Arreglo.
Herencias Conceptos básicos i
Programación orientada a objetos La programación orientada a objetos o POO (OOP según sus siglas en inglés) es un paradigma de programación que usa objetos.
Diferencia entre implementar en RPA e IPOO - Diseño En.
Estructuras de control selectivas Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión Práctica 3.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Objetos.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Encapsulamiento.
Métodos en Java. Estructura de un programa en Java ► La relación con la vida misma la podemos ver en el siguiente comentario: Imaginemos que dos clases.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Objetos.
Programación I Clases. Paradigma POO La programación Orientada a objetos (POO) es una forma programar, más cercana a como expresaríamos las cosas en la.
Tipos genéricos Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Unidad Didáctica 3.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Herencia.
Arrays, Cadenas y Vectores Tipos Genéricos Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Unidad Didáctica 5 Versión
Transcripción de la presentación:

Encapsulamiento y Abstracción 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. 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

Encapsulamiento y Abstracción 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. Introducción a la Programación Orientada a Objetos

Encapsulamiento y Abstracción 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. Introducción a la Programación Orientada a Objetos

Tipo de Dato Abstracto 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. Introducción a la Programación Orientada a Objetos

Tipo de Dato Abstracto 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. Introducción a la Programación Orientada a Objetos

Caso de Estudio: TDA Racional 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? Introducción a la Programación Orientada a Objetos

Caso de Estudio: TDA Racional num : entero den : entero Requiere d > 0 <<constructor>> Racional (n,d : entero) <<comandos>> establecerNum (n : entero) establecerDen (d : entero) copy(r : Racional) 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 Introducción a la Programación Orientada a Objetos

Caso de Estudio: TDA 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 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

Caso de Estudio: TDA Racional class Racional { private int num; private int den; Introducción a la Programación Orientada a Objetos

Caso de Estudio: TDA Racional class Racional { … // CONSTRUCTOR public Racional(int n, int d ) { //Requiere d > 0 num = n; den = d; } Introducción a la Programación Orientada a Objetos

Caso de Estudio: TDA Racional // COMANDOS public void establecerNum(int n ) { num = n; } public void establecerDen(int d ) { //Requiere d > 0 den = d; Introducción a la Programación Orientada a Objetos

Caso de Estudio: TDA Racional // COMANDOS … public void copy(Racional r ) { num = r.obtenerNum(); den = r.obtenerDen(); } Introducción a la Programación Orientada a Objetos

Caso de Estudio: TDA Racional // CONSULTAS public int obtenerNum() { return num; } public int obtenerDen() { return den; Introducción a la Programación Orientada a Objetos

Caso de Estudio: TDA Racional // 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; } Introducción a la Programación Orientada a Objetos

Caso de Estudio: TDA Racional // CONSULTAS … public String toString() { return ( num + "/" + den ); } public Racional clone (){ Racional r = new Racional(num,den); return r; return new Racional(num,den); Introducción a la Programación Orientada a Objetos

Caso de Estudio: TDA Racional 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 ) { - den*op.obtenerNum(); Racional s = new Racional(n,d); return s; Introducción a la Programación Orientada a Objetos

Caso de Estudio: TDA Racional public Racional resta( Racional op ) { int n = num*op.obtenerDen() - den*op.obtenerNum(); int d = den * op.obtenerDen(); return( new Racional(n, d ) ); } Introducción a la Programación Orientada a Objetos

Caso de Estudio: TDA Racional public Racional producto( Racional op ) { return new Racional(num*op.obtenerNum(), den*op.obtenerDen()); } Introducción a la Programación Orientada a Objetos

Caso de Estudio: TDA Racional 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. Introducción a la Programación Orientada a Objetos

Caso de Estudio: TDA Racional 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. Introducción a la Programación Orientada a Objetos

Caso de Estudio: TDA 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) copy(r : Racional) El comentario asociado al constructor establece un compromiso respecto a la representación de un racional que afecta a los comandos Introducción a la Programación Orientada a Objetos

Caso de Estudio: TDA 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 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

Caso de Estudio: TDA Racional 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; } Introducción a la Programación Orientada a Objetos

Caso de Estudio: TDA Racional // 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; Introducción a la Programación Orientada a Objetos

Caso de Estudio: TDA Racional // COMANDOS … public void copy(Racional r ) { num = r.obtenerNum(); den = r.obtenerDen(); } Introducción a la Programación Orientada a Objetos

Caso de Estudio: TDA Racional // CONSULTAS public int obtenerNum() { return num; } public int obtenerDen() { return den; Introducción a la Programación Orientada a Objetos

Caso de Estudio: TDA Racional // 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; Introducción a la Programación Orientada a Objetos

Contenido de la clase Abstracciones y Modelos Variables, Objetos y Referencias. Identidad, Igualdad y Equivalencia Encapsulamiento y Abstracción Tipos de Datos Abstractos Introducción a la Programación Orientada a Objetos