Download - Clases y objetos en Java
CONTENIDO
1. Abstracción de los lenguajes deprogramación.
2. Tipos abstractos de datos.
3. Especificación de los TAD.
4. Clases y objetos.
5. Declaración de una clase.
6. Paquetes.
7. Constructores.
8. Recolección de objetos
9. Objeto que envía el mensaje: this.
10. Miembros static de una clase.
11. Clase object.
12. Referencias bibliográficas.
13. Aplicación en Java.
ABSTRACCIÓN DE LOS LENGUAJES DE PROGRAMACIÓN
Los lenguajes de programación son las herramientas mediante las cuales los diseñadores de
lenguajes pueden implementar los modelos abstractos.
ABSTRACCIÓN: Permite distinguir las
características de los objetos: Atributos y
Métodos.
INVESTIGAR ()
REDACTAR ()
LEER ()
NOMBRE
DIRECCION
INDENTIFICACION
ABSTRACCIÓN: Ignorar
detalles específicos buscando
generalidades que ofrezcan
una perspectiva distinta, mas
favorable a su resolución.
ABSTRACCIÓN DE LOS LENGUAJES DE PROGRAMACIÓN
ABSTRACCIONES DE CONTROL
NIVEL DE SENTENCIA NIVEL POR PROCEDIMIENTO
En Java, la abstracción procedimental se
establece con los métodos o funciones
miembros de clases.
La abstracción a nivel de sentencia se
establece con sentencias condicionales y
sentencias repetitivas.
La evolución de los lenguajes de
programación ha permitido la aparición de
otros mecanismos para la abstracción de
control, como manejo de excepciones,
unidades concurrentes o plantillas.
OTROS MECANISMOS DE CONTROL
ABSTRACCIÓN DE LOS LENGUAJES DE PROGRAMACIÓN
ABSTRACCIONES DE DATOS
La abstracción de datos es la técnica de programación que permite inventar o definir nuevos tipos de datos
(tipos de datos definidos por el usuario) adecuados a la aplicación que se desea realizar.
Objetivo: simplificar el proceso de la programación. Lo hace
permitiendo al programador concentrarse sólo en los atributos
que son esenciales y le permite ignorar los que son
prescindibles.
Consideraciones esenciales:
Los datos que se involucran en el problema.
Las operaciones que se aplican sobre los datos
Los tipos de datos son abstracciones y el proceso de construir
nuevos tipos se llama abstracción de datos
TIPO ABSTRACTO DE DATO
Un tipo de datos definido por el programador se denomina tipo abstracto de datos (TAD) para
distinguirlo de los tipos predefinidos de datos. Los tipos abstractos de datos están formados por
los datos (estructuras de datos) y las operaciones (procedimientos o funciones) que se realizan
sobre esos datos.
Las principales ventajas que nos aportan los TAD son las siguientes:
Mejoran la conceptualización y hacen más claro y comprensible el código.
Hacen que el sistema sea más robusto.
Reducen el tiempo de compilación.
Permiten modificar la implementación sin que afecte al interfaz público.
Facilitan la extensibilidad.
TIPO ABSTRACTO DE DATO
struct TAD{
char Nombre[30];char correo[35];int edad;
};
class TAD{
public:string Nombre;string correo;int edad;
};
IMPLEMENTACION DE LOS TAD
C/C++ C++
CLASES Y OBJETOS
CLASE: es la abstracción de las propiedades y operaciones o acciones que ejecutan los objetos
del mundo real.
OBJETO: son las instancias de una clase.
Nombre de
la clase
Características
de la clase
VEHICULO
Marca
Referencia
Modelo
Placa
Color
Valor
Clase Objetos de la clase
Marca: Chevrolet
Referencia: Aveo
Modelo: 2010
Placa: AAB112
Color: Naranja
Valor: $20,000,000
Marca: Ford
Referencia: Fiesta
Modelo: 2017
Placa: DGM779
Color: Verde
Valor: $35,999,000
Objeto 1 Objeto 2
Cada objeto tiene valores propios para cada una de
las características de la Clase.
Los objetos que existen en el mundo real
pueden ser conceptuales o físicos.
DECLARACIÓN DE UNA CLASE
Una clase se representa en un modelo, como se observa a continuación:
Nombre Clase
Características
(Atributos)
Comportamiento
(Métodos)
Nombre Clase
Características
(Atributos)
Comportamiento
(Métodos)
Cabecera
Cuerpo
de la Clase
CLASE
class NombreClase{
}
Declaración de Atributos
Definición de Métodos
DECLARACIÓN DE UNA CLASE
Visibilidad de los métodos de una clase
Un principio fundamental en programación orientada a objetos es la ocultación de la información,
que significa que a determinados datos del interior de una clase no se puede acceder por métodos
externos a ella.
No accesibles desde
el exterior de la clase
(acceso denegado)
Privado
Accesible desde el
exterior de la clase
Publico
Datos o Métodos
Datos o Métodos
Las subclases si
pueden tener
acceso.
Protegido
Datos o Métodos
DECLARACIÓN DE UNA CLASE
Visibilidad de los métodos de una clase
Un principio fundamental en programación orientada a objetos es la ocultación de la información,
que significa que a determinados datos del interior de una clase no se puede acceder por métodos
externos a ella.
Tipo de
miembro
Miembro de la
misma clase
Miembro de una
clase derivada
Miembro de clase
del paquete
Miembro de clase
de otro paquete
Private X
En blanco X X
Protected X X X
Public X X X X
Visibilidad, “X” indica que el acceso está permitido.
DECLARACIÓN DE UNA CLASE
Métodos de una clase:
• Definen el comportamiento de una clase.
• Es la agrupación de un conjunto de instrucciones que resuelven una tarea en particular.
• Una invocación (llamada) activa ese comportamiento sobre un determinado objeto.
class Producto{
private int ID;private string Nombre;
Public void setID(int ID);Public void setNombre(String Nombre);Public int getID();Public String getNombre();
}
PAQUETES
Sentencia Package. Los paquetes son la forma que tiene Java de organizar los archivos con las
clases necesarias para construir las aplicaciones. Java incorpora varios paquetes, por ejemplo
java.util o java.io, con las clases básicas para construir programas.
Formato:
package NombrePaquete;
Las clases que se encuentran en los paquetes se identifican
utilizando el nombre del paquete, el selector punto (.) y, a
continuación, el nombre de la clase.
Import
Formato:
import IdentificacionPaquete.NombreClase;import IdentificacionPaquete.*;
Aunque aparezca la sentencia import paquete.*, el compilador genera
bytecode sólo para las clases utilizadas
CONSTRUCTORES
Un constructor es un método que se ejecuta automáticamente cuando se crea un objeto de una
clase. Sirve para inicializar los miembros de la clase.
El constructor tiene el mismo nombre que la clase. Cuando se define no se puede especificar un
valor de retorno, nunca devuelve un valor. Sin embargo, puede tomar cualquier número de
argumentos.
class Persona{
string nombre;int edad;public Persona(string nom, int ed) {
nombre = nom;edad = ed;
}}
CONSTRUCTORES
Reglas
Para crear un constructor:
1. El constructor tiene el mismo nombre que la clase.
2. Puede tener cero o mas argumentos.
3. No tiene tipo de retorno.
Constructor por defecto:
Java crea automáticamente un constructor por defecto cuando no existen otros
constructores.
Constructores sobrecargados :
Para prevenir a los usuarios de la clase de crear un objeto sin parámetros, se puede: (1)
omitir el constructor por defecto, o bien (2) hacer el constructor privado.
RECOLECCIÓN DE OBJETOS
Instancias de una clase:
En Java, un objeto siempre ha de estar referenciado por una variable; en el momento en que un
objeto deja de estar referenciado, se activa la rutina de recolección de memoria, se puede decir
que el objeto es liberado y la memoria que ocupa puede ser reutilizada.
Ejemplo:
Persona Eduardo = new Persona(“Eduardo”, 22);
Destrucción de un objeto:
La siguiente sentencia provoca que el objeto Eduardo sea liberado automáticamente:
Eduardo = null;
RECOLECCIÓN DE OBJETOS
Metodo finalize()
El método finalize() es especial, se llama automáticamente si ha sido definido en la clase,
justo antes que la memoria del objeto recolectado vaya a ser devuelta al sistema. El método no
es un destructor del objeto, no libera memoria; en algunas aplicaciones, se puede utilizar para
liberar ciertos recursos del sistema.
Ejemplo:
protected void finalize()
{
System.out.println("Fin de objeto…");
NroPersonas--;
}
OBJETO QUE ENVÍA EL MENSAJE: this
El uso más frecuente del this en Java tiene lugar cuando existe sobrecarga de nombres. La
sobrecarga de nombres se da cuando tenemos una variable local de un método o constructor, o
un parámetro formal de un método o constructor, con un nombre idéntico al de un campo de la
clase. Fundamentalmente, this tiene dos usos:
1. Seleccionar explícitamente un miembro de una clase con el fin de dar mas claridad o de
evitar colisión de identificadores.
class Triangulo {
private double base; private double altura;
public void datosTriangulo(double base, double altura) { this.base = base; this.altura = altura;
} }
Fundamentalmente, this tiene dos usos:
OBJETO QUE ENVÍA EL MENSAJE: this
El uso más frecuente del this en Java tiene lugar cuando existe sobrecarga de nombres. La
sobrecarga de nombres se da cuando tenemos una variable local de un método o constructor, o
un parámetro formal de un método o constructor, con un nombre idéntico al de un campo de la
clase. Fundamentalmente, this tiene dos usos:
2. Que un método devuelva el mismo objeto que lo llamó. De esa manera, se pueden hacer
llamadas en cascada a métodos de la misma clase.
class Triangulo {
private double base; private double altura;
public Triangulo datosTriangulo(double base, double altura) { this.base = base; this.altura = altura; return this;
} }
Fundamentalmente, this tiene dos usos:
MIEMBROS static DE UNA CLASE
Cada instancia de una clase, cada objeto, tiene su propia copia de las variables de la clase.
Cuando interese que haya miembros que no estén ligados a los objetos sino a la clase y, por
tanto, sean comunes a todos los objetos, estos se declaran static.
Variables static: Las variables de clase static son compartidas por todos los objetos de la clase.
Se declaran de igual manera que otra variable, añadiendo como prefijo la palabra reservada
static.
Métodos static: Los métodos de las clases se llaman a través de los objetos. En ocasiones
interesa definir métodos que estén controlados por la clase, de modo que no haga falta crear un
objeto para llamarlos: son los métodos static.
private static double base; private static double altura;
public static Triangulo datosTriangulo(double base, double altura) {}
CLASE object
Object es la superclase base de todas las clases de Java; toda clase definida en Java hereda de la
clase Object y, en consecuencia, toda variable referencia a una clase se convierte,
automáticamente, al tipo Object.
Ejemplo:
Object g; String cd = new String("Barranco la Parra");Integer y = new Integer(72); // objeto inicializado a 72 g = cd; // g referencia al mismo objeto que cd g = y; // g ahora referencia a un objeto Integer
La clase Object tiene dos métodos importantes: equals() y toString(). Generalmente, se
redefinen en las clases para especializarlos.
equals(): Compara el objeto que hace la llamada con el objeto que se pasa como argumento.
toString(): Este método construye una cadena, que es la representación del objeto.
REFERENCIAS BIBLIOGRÁFICAS
• Paredes, D. (2007). Tipos Abstractos de Datos (TAD). Obtenido de
David Paredes: http://www.davidparedes.es/2009/01/02/tipos-
abstractos-de-datos-tad/
• Joyanes, L., & Zahonero, I. (2008). Estructuras de datos. Mc Graw
Hill.
• Augusto, P. (2013). Java a fondo, 2da edición. Alfaomega.
• Deitel, H., & Deitel, P. (2004). Como programar en C/C++ y Java, cuarta edición.
Juarez: Pearson.
• Avella, C. (2013). Curso de POO en Java - clases y objetos. Obtenido de Slideshare:
http://es.slideshare.net/cpavella/6-clases-objetos
• Flores, C. (2015). Objetos y Clases. Obtenido de SlidePlayer:
http://slideplayer.es/slide/3957888/
APLICACIÓN EN JAVA
Se desea realizar una clase Vector3d que permita manipular vectores de tres componentes
(coordenadas x, y, z) de acuerdo con las siguientes normas:
• Posee un método constructor.
• Tiene un método miembro equals() que permite saber si dos vectores tienen sus componentes
o coordenadas iguales.
• Posee un método normamax() que permita obtener la norma de dos vectores (Nota: La norma de
un vector v = x, y, z es ( 𝑥2 + 𝑦2 + 𝑧2 ).
¡¡ GRACIAS !!
Programación III: Estructura de Archivos