Clases y Objetos
Conceptos fundamentales en el Modelo de Objetos
Hay 4 conceptos fundamentales en el paradigma Orientado a Objetos, estos son:
- Abstracción
- Encapsulamiento
- Herencia
- Polimorfismo
Abstracción
-
Consiste en representar las características escenciales de un objeto, olvidándose de otras no escenciales.
-
Definir una abstracción significa describir una entidad del mundo real, no importa lo compleja que sea y luego utilizarla en la descripción de un programa.
-
Una clase es una abstracción de un grupo de objetos, que tiene la posibilidad de realizar una serie de operaciones.
¿Que es una clase?
-
Conjunto de objetos con propiedades y comportamientos similares.
-
Una clase esta asociada de:
- Atributos: Se utilizan para describir, identificar o informar el estado de un objeto.
- Métodos: Definen el comportamiento del objeto
¿Que es un Objeto?
-
Es una entidad única con la que se representa cada una de las instancias de una clase, con su propio estado.
-
Se pueden crear tantos objetos de una clase como se quieran.
Clases y Objetos
La clase define el Tipo de Dato (Atributos y Métodos) que serán comunes a todas las instancias (objetos) de la clase.
Encapsulamiento
-
Cada clase "Firma un contrato con el exterior" comprometiéndose a exhibir un determinado comportamiento, pero cómo lo consigue queda oculto o encapsulado en el interior de la clase.
-
"La abstracción y el encapsulamiento son conceptos complementarios: La abstracción se centra en el comportamiento observable de un objeto, mientras que el encapsulamiento se centra en la implementación que da lugar a ese comportamiento" (Booch).
-
Ventaja: Permite que la implementación de un objeto se pueda cambiar sin afectar a las aplicaciones que lo utilizan.
-
El acceso a los datos se realiza a través de los métodos de la Interfaz.
Herencia
La herencia es el mecanismo que permite definir una clase (subclase) a partir de otra clase (superclase), de manera que la subclase hereda la estructura (estado) de la superclase a través de las variables, y hereda el comportamiento a través de los métodos.
Polimorfismo
-
Se refiere a la capacidad de que objetos de tipos diferentes respondan al mismo mensaje con su propio comportamiento.
-
Múltiples formas de ejecutar un mismo método común y que pertenecen a varias clases.
Ventajas de la Programación Orientada a Objetos
- Reutilización de código.
- Extensibilidad de código.
- Facilidad de mantenimiento del software.
- Portabilidad.
- Rapidez de desarrollo de software.
- Facilidad de trabajo en equipo.
- Más fáciles de entender poreque se usa abstracciones cercanas al mundo real.
Implementación de Clases
Sintaxis de Clase
Ejemplo en Java:
public class MiClase
{
//Definición de atributos
//Definición de métodos
}
Atributos
Los atributos en una clase pueden ser:
-
Atributos de Clase: Son comunes a todas las instancais de la calse, por tanto el valor es el mismo para todos los objetos. Ejemplo: Contador de instancias de una clase.
-
Atributos de instancia: Determinan el estado de los objetos. Cada objeto puede tener valores diferentes para estos atributos. Ejemplo: Nombre y Edad de cada Objeto Cliente.
Sintaxis de Atributo
tipoDato nombreVariable;
El tipo de dato puede ser:
-
Tipo Primitivo: int, float, double, char, etc.
-
Tipo Compuesto: String, referencia a objetos de otra clase.
Ejemplo:
public class Circulo
{
double radio;
//... más codigo
}
Métodos
-
Son las operaciones (funciones) que se le podrán aplicar a los objetos.
-
Tipicamente se utilizan para:
- Obtener el estado del objeto: Obtener algún atributo en particular (métodos getter).
- Modificar el estado del objeto: Modificar algún atributo en particular (métodos setter).
Ejemplo: ObtenerEdad, ModificarEdad, etc.
- Son funciones, por tanto: pueden retornar valores y recibir parámetros.
Sintaxis de Métodos
tipoRetorno nombreMétodo([ListaParámetros])
{
//Cuerpo del método
[return valorRetorno;]
}
TipoRetorno:
-
Si el método retorna algún valor, se evalúa el tipo de dato al que pertenece (int, float, etc), y se hace uso de la instrucción return.
-
Si el método no retorna valor, el tipoRetorno debe ser void y por lo tanto ya no se usa la instrucción return.
Ejemplos:
Método con parámetros y retorno
double calcularArea(double radio)
{
double area;
area = radio*radio*3.1415;
return area;
}
Método con parámetros y sin retorno
void calcularArea(double radio)
{
double area;
area = radio*radio*3.1415;
System.out.println("El area es: "+area);
}
Ciclo de Vida de los Objetos
El proceso para crear objetos tiene dos etapas:
- Declaración: Los objetos se declaran indicando el nombre de la clase y después el nombre del objeto.
Circulo c1;
- Creación: El objeto se crea con la palabra reserva new y una llamada al constructor.
new Circulo();
- Los objetos en Java no necesitan destrucción explícita por parte del programador.
- El lenguaje tiene implementado un sistema de recolección de basura (garbage collection).
¿Que es un Constructor?
-
Un constructor es un método especial que se llama automáticamente cuando se crea un Objeto.
-
Tiene el mismo nombre que la clase.
-
Pueden recibir parámetros pero no retornan ningún valor.
-
Se utilizan para inicializar los atributos de la Clase.
-
Pueden sobrecargarse: Se pueden definir varios constructores los cuales deben diferenciarse en los parámetros.
Ejemplo:
Cliente();
Cliente(nombre);
Cliente(nombre, edad);
Sintaxis del Constructor
public class NombreClase
{
NombreClase()//constructor
{}
}
Implementando una Clase Java
class Circulo
{
double radio; //atributo
Circulo() //constructor por defecto
{
radio = 0;
}
Circulo(double r) //Constructor con 1 parámetro
{
radio = r;
}
//Métodos para Cacular el Área y Perímetro
double calcularArea()
{
return 3.1415*radio*radio;
}
double calcularPerimetro()
{
return 2*3.1415*radio;
}
}
Envío de Mensajes
-
Un mensaje es una petición para solicitar una llamada a una función que pertenece a un objeto en particular.
-
Todos los objetos de una determinada clase pueden recibir los mismos mensajes.
-
Cada mensaje tiene tres componentes:
- El objeto destinario del mensaje.
- El nombre del método a ejecutar.
- Los parámetros (si existen) del método.
Ejemplo de Sintaxis:
objeto.metodo();
objeto.metodo(argumentos);
Instanciación de Clases
- Tipos:
- Implícita: Se instancia en forma directa al Constructor de la Clase.
```java
new Circulo();
``` - Explícita: Se especifica de que clase se va a instanciar el Objeto.
```java
Circulo c = new Circulo();
```
- Implícita: Se instancia en forma directa al Constructor de la Clase.
Instanciando Clases en Java
public class PruebaCirculo
{
public static void main(String[]args)
{
//Declaración de un Objeto
Circulo c1;
//Creación del objeto
c1 = new Circulo();
//Declaración y creación de un objeto en una sola linea
Circulo c2 = new Circulo(10);
//Impimir resultado en pantalla
System.out.println("Area c1: " +c1.calcularArea());
System.out.println("Perimtro c1: " +c1.calcularPerimetro());
System.out.println("Area c2: " +c2.calcularArea());
System.out.println("Perimetro c2: " +c2.calcularPerimetro());
}
}