Logo Studenta

Objetos y Clases en Programación O.O.

¡Estudia con miles de materiales!

Vista previa del material en texto

PARADIGMAS DE PROGRAMACION Universidad Tecnológica Nacional 
 Facultad Regional Mendoza 
 Guía de programación O.O. cátedra de Paradigmas de Programación 9 
 
1.5. Objetos 
Un objeto representa un ítem, unidad o entidad perfectamente identificable, ya sea real o 
abstracto, con un rol bien definido en el dominio de un problema. Las principales características de 
un objeto de dato podemos resumirlas en: 
1. Estado 
Involucra a todas las propiedades (en general estáticas) del objeto de dato, además de los 
valores (en general dinámicos) actuales de cada una de esas propiedades del objeto. El estado queda 
determinado por el valor de sus atributos y en el lenguaje de programación, se implementa por 
medio de variables. 
2. Comportamiento 
Es la descripción acerca de como actúa y reacciona un objeto, en términos de cambios de 
estado e intercambio de mensajes, o sea que el comportamiento de un objeto está definido por sus 
acciones y en el lenguaje de programación, se implementa por medio de funciones. 
3. Identidad 
Es la propiedad que hace que un objeto se distinga de cualquier otro del mismo tipo, no debe 
confundirse con el concepto de nombre que se le asigna a un objeto para identificarlo como 
abstracción dentro del sistema. En un lenguaje de programación, esto podríamos asociarlo con la 
dirección de memoria que ocupa. 
Ejemplos de objetos pueden ser: 
• cosas tangibles como un auto, un avión, un libro, un reactor nuclear, una alarma (el 
dispositivo). 
• roles que cumplen personas u organizaciones como un cliente, un empleado, un abogado, un 
departamento, un empleador, un vendedor. 
• ocurrencias o eventos en el tiempo como un accidente, un llamado, un vuelo, la parada de un 
sistema, una alarma (el hecho que suene). 
• las interacciones que relacionan con otros objetos una compra, una venta, un casamiento. 
• las especificaciones de otros objetos como el modelo de un auto, un tipo de seguro, etc. 
? Qué define el estado de un objeto. 
 
1.5.1. Descripción de los objetos 
La descripción de un objeto, es aquella información relativa al mismo, que nos permite 
afirmar con certidumbre, que una cosa del mundo real o no, es una instancia del tipo de objeto en 
cuestión o no, de acuerdo a la conceptualización del mismo dentro del modelo de información. 
PARADIGMAS DE PROGRAMACION Universidad Tecnológica Nacional 
 Facultad Regional Mendoza 
 Guía de programación O.O. cátedra de Paradigmas de Programación 10 
 
Generalmente en un sistema complejo, la descripción que hacemos de los objetos, pasa por definir 
claramente las condiciones y características que debe reunir para ser una instancia. 
Por ejemplo, en un sistema para el registro de la patente automotor, el vehículo debe tener 
una antigüedad menor de 30 años, para ser incluido en la nómina de unidades que están obligadas a 
pagar. En este caso, si bien un auto puede tener todas las características de los “objetos auto”, para 
este sistema en particular no podrá ser considerado como tal. 
Otro punto importante a describir de los objetos, es su relación con otros, sobre todo cuando 
es requisito para que exista dentro del sistema, que otro objeto también exista. 
La descripción de las características generales de los objetos se realiza a través de la 
definición de clases. 
1.5.2. Definición de clases 
Especificar una clase, es similar a definir un nuevo tipo de dato, en particular un tipo 
abstracto de datos. Para la especificación usaremos la palabra reservada class. Una clase puede estar 
formada por cualquier combinación de componentes privados, públicos o protegidos. 
Básicamente especificar una clase, es similar a definir un nuevo tipo de dato, en particular un 
tipo abstracto de datos. Para la especificación usaremos la palabra reservada class. Una clase puede 
estar formada por cualquier combinación de componentes privados, públicos o protegidos. Si no se 
especifica nada, se asumen como privados. 
Las variables de instancia y métodos de una clase, son calificados según las siguientes 
categorías, las cuales determinan el acceso que se pueden tener a cada miembro de la clase en un 
programa Java: 
public: los miembros son visibles para la propia clase y al resto de ellas. 
private: los miembros sólo son visibles para la propia clase. 
protected: los miembros son visibles para la propia clase, las subclases de esta y las clases que 
pertenecen al mismo paquete. 
private protected: los miembros son visibles sólo para la propia clase y las subclases de esta. 
friendly: valor por defecto si no se indica nada, equivale a protected. 
? En qué se diferencian los conceptos de clase y objeto. 
1.5.3. Atributos 
Las características de los atributos podemos resumirlas en: 
1. Un atributo es una característica que poseen todos los objetos de un determinado tipo. 
2. Los atributos son aquellos datos que permiten especificar la descripción completa de un objeto. 
PARADIGMAS DE PROGRAMACION Universidad Tecnológica Nacional 
 Facultad Regional Mendoza 
 Guía de programación O.O. cátedra de Paradigmas de Programación 11 
 
3. Un atributo puede ser una referencia a otro objeto. 
4. Los atributos permiten describir el estado de un objeto. 
Supongamos que estamos caracterizando los objetos del tipo auto, con una lista de atributos 
que ayudan a describir a un auto en particular: el color, el modelo, el tipo de motor, etc. 
Los atributos que interesan a un sistema en particular, no necesariamente serán los mismos 
para otro. Por ejemplo, el atributo, número de patente es necesario para un sistema de recaudación 
de impuestos, pero no lo es para un sistema de stock en fábrica. 
Cuando describimos los atributos de un objeto, algunos de los aspectos que se indican son: 
el nombre por el cual lo referimos, el tipo de valor al que se refiere, el rango de valores que puede 
tomar, y cualquier otro aspecto que ayude a la descripción del mismo. Podemos clasificar los 
atributos de un objeto como de: 
1. Instancia: en que cada objeto tiene su propia copia del atributo. 
2. Clase: es único y todos los objetos de una clase lo comparten. 
1.5.4. Métodos 
Describen los distintos comportamientos que tiene un objeto, frente a la recepción de 
estímulos externos al mismo. En general las responsabilidades de un objeto, son implementadas a 
través de los métodos. Los métodos, son básicamente rutinas para procesar determinados mensajes, 
que un objeto reconoce. 
Los métodos podemos clasificarlos según sus características en: 
1. Internos: son funciones de uso interno de la clase, pero no puede ser ejecutados en forma directa 
mediante el envío de mensajes externos. 
2. Instancia: Son aquellos que reflejan las responsabilidades asignadas a los objetos de una clase. 
3. Clase: Son aquellos que reflejan las responsabilidades asignadas a la clase en sí, por ejemplo la 
creación de objetos. 
1.5.5. Mensajes y métodos 
Una vez definida una clase pueden definirse objetos de esa clase y activar sus métodos. Un 
programa O.O. Se basa en el intercambio de mensajes entre objetos que pertenecen a alguna clase. 
Un objeto sólo puede reaccionar ante mensajes para los cuales tenga definidos métodos específicos. 
La forma genérica de enviar un mensaje es la siguiente: Id-objeto.id-método(argumentos) donde 
el punto indica que id-método es un miembro del objeto id-objeto. 
1.6. Objetos de un programa 
Un programa O.O. trabaja en base a un conjunto de objetos, que encapsulan las propiedades 
y comportamientos del sistema que se ha modelado. Estos objetos son creados a partir de 
definiciones previas y durante la ejecución de la aplicación intercambian mensajes entre sí. 
PARADIGMAS DE PROGRAMACION Universidad Tecnológica Nacional 
 Facultad Regional Mendoza 
 Guía de programación O.O. cátedra de Paradigmas de Programación 12 
 
Al recibir un mensaje un objeto cualquiera, se activa el método correspondiente. Como 
resultadode esto un objeto puede cambiar su estado o no, enviar un mensaje a otro objeto, devolver 
un valor, y/o cualquier otra acción, según lo especificado en la implementación del método. 
Un objeto responde a los mensajes que se le envían, usando los métodos que figuran en la 
descripción de su clase. 
El estado de un objeto es almacenado en las 
llamadas variables de instancia, la especificación de 
estas figura en la descripción de la clase a la que 
pertenece el objeto es cuestión. 
El nombre de un método está asociado a la 
clase en que se define, por esto otra clase puede tener 
un método con el mismo nombre y cuando se active 
un método de un objeto, se ejecutará el que 
corresponde a la clase a la que pertenece el objeto. 
? Es obligatorio definir constructores en cada clase. 
1.7. Constructores y destructores de objetos 
Cuando en un lenguaje tradicional, declaramos una variable de algún tipo primitivo, al 
ejecutarse dicha sentencia, son realizadas diversas tareas relacionadas con su creación, como la 
reserva de espacio e inicialización (si corresponde). Por lo general para la creación y destrucción de 
cualquier objeto, se deben realizar una serie de tareas, estas últimas son indicadas en métodos 
especiales, que son los constructores y el destructores de la clase. 
Las variables de instancia de los objetos de una clase sólo pueden ser inicializadas por el 
constructor al crearse los objetos en tiempo de ejecución. Estos métodos son llamados en forma 
automática para crear o destruir objetos. 
Al definir un constructor se le debe dar el mismo nombre que a la clase 
Una clase puede tener definidos varios constructores (a esto se le denomina sobrecarga), para 
diferentes situaciones de uso de la misma, por ejemplo el constructor de copia de objetos de la clase, 
que es usado para crear duplicados de los objetos de una clase. 
Los constructores, en realidad son métodos de la clase, ya que no son ejecutados para una 
instancia de objeto en particular, sino justamente para crearlo. No devuelven ningún valor y no se 
debe indicar nada como tipo de devolución, ni siquiera la palabra void. 
La inicialización de las variables de instancia de un objeto, se hace al declararlas en la clase 
o por medio del constructor. 
? Cuántas formas de pasaje de parámetros tiene Java. 
 Instancia de un objeto auto: 
 
 ATRIBUTOS: 
 Patente = AXT342 
 Propietario = "P. García" 
 Marca = "Ford" 
 MÉTODOS: MENSAJES: 
 pagarImpuesto pagarImpuesto 
 elDueño elDueño 
 cualEsLaMarca cualEsLaMarca 
 
PARADIGMAS DE PROGRAMACION Universidad Tecnológica Nacional 
 Facultad Regional Mendoza 
 Guía de programación O.O. cátedra de Paradigmas de Programación 13 
 
1.8. Sobrecarga de métodos 
Una clase puede tener funciones (métodos), con el mismo nombre e implementaciones 
diferentes, pero que deben poder diferenciarse por la lista de parámetros, ya sea por la cantidad de 
parámetros o el tipo. Esto es lo que se denomina sobrecarga (ver SSL). En cada situación de uso, la 
función a ejecutar es asociada de acuerdo al prototipo que se adapta a la llamada. 
EJEMPLO 
import java.io.*; 
class NumeroRacional{ 
private long numerador; // se inicializan en 0 por defecto 
private long denominador; 
 public NumeroRacional(long n, long d){ 
 numerador = n > 0 ? n : 0; // se restringe a positivos 
 denominador = d > 0 ? d : 0; 
} 
public NumeroRacional(){ // constructor sobrecargado 
 numerador = 0; 
 denominador = 0; 
} 
public NumeroRacional(NumeroRacional obj){ // constructor sobrecargado de copia 
 numerador = obj.numerador; 
 denominador = obj.denominador; 
} 
public void asignar(long n, long d){ 
 numerador = n > 0 ? n : 0; // se restringe a positivos 
 denominador = d > 0 ? d : 0; 
} 
public void asignar(NumeroRacional obj){ // EN JAVA: 
 if (obj != this) { // para evitar reasignar el mismo objeto 
 numerador = obj.numerador; // los objetos de tipo no primitivo 
 denominador = obj.denominador; // siempre se pasan por referencia 
 } 
} 
public boolean esIgual(NumeroRacional obj){ // método para comparar dos números 
 return numerador == obj.numerador && denominador == obj.denominador; 
} 
} 
public class prueba { 
 public static void main(String [] arg){ 
 NumeroRacional a, b, c, d; 
 a = new NumeroRacional(); // EN JAVA: 
 b = new NumeroRacional(3, 4); // los objetos de tipo no primitivo 
 c = new NumeroRacional(b); // sólo pueden crearse en forma 
 d = new NumeroRacional(b); // dinámica 
 a.asignar(b); 
 if (c.esIgual(d)) 
PARADIGMAS DE PROGRAMACION Universidad Tecnológica Nacional 
 Facultad Regional Mendoza 
 Guía de programación O.O. cátedra de Paradigmas de Programación 14 
 
System.out.println(“Iguales”); 
 else 
System.out.println(“Distintos”); 
} 
} 
? Cómo se destruye explícitamente un objeto en Java. 
Comentarios acerca del programa: 
La variable this que se utiliza en la sentencia if ( obj != this), en una referencia (un puntero) 
que pertenece al ambiente predefinido de referencia de Java. Siempre contiene la dirección de 
memoria del objeto para el cual se ha activado el método que se está ejecutando. En este caso se la 
utiliza para verificar que la referencia al objeto obj no sea la misma que la del objeto activo, ya que 
en ese caso se estaría asignando el mismo objeto. 
Si bien otros lenguajes O.O. permiten implementar métodos destructores, para destruir los objetos 
de datos creados en forma dinámcia, en Java no es necesario, ya que posee un mecanismo 
automático de destrucción.

Continuar navegando