Fundamentos de Programación IPP Profesor:
Pedro González
OBJETOS Y CLASES Objetos. Primero empecemos entendiendo que es un objeto del mundo real. Un objeto del mundo real es cualquier cosa que vemos a nuestro alrededor. Por ejemplo, los automóviles tienen características (marca, modelo, color, velocidad máxima, etc.) y comportamiento (frenar, acelerar, retroceder, llenar combustible, cambiar llantas, etc.).
Los Objetos de Software, al igual que los objetos del mundo real, también tienen características y comportamientos. Un objeto de software mantiene sus características en una o más "variables", e implementa su comportamiento con "métodos". Un método es una función o subrutina asociada a un objeto. Definición teórica: Un objeto es una unidad de código compuesto de variables y métodos relacionados.
Marca = Ford Modelo = Focus Color = Azul Velocidad Máxima = 260 km/h
OBJETOS Y CLASES
Clases
En el mundo real, normalmente tenemos muchos objetos del mismo tipo. Por ejemplo, nuestro teléfono celular es sólo uno de los miles que hay en el mundo. Cuando se fabrican los celulares, los fabricantes aprovechan el hecho de que los celulares comparten esas características comunes y construyen modelos o plantillas comunes, para que a partir de esas se puedan crear muchos equipos celulares del mismo modelo. A ese modelo o plantilla le llamamos CLASE, y a los equipos que sacamos a partir de ella la llamamos OBJETOS. Un objeto que se crea a partir de una clase se dice que es una instancia de esa clase
OBJETOS Y CLASES
Herencia
La herencia es uno de los conceptos más cruciales en la POO. La herencia básicamente consiste en que una clase puede heredar sus variables y métodos a varias subclases (la clase que hereda es llamada superclase o clase padre). Esto significa que una subclase, aparte de los atributos y métodos propios, tiene incorporados los atributos y métodos heredados de la superclase. De esta manera se crea una jerarquía de herencia. Por ejemplo, imaginemos que estamos haciendo el análisis de un Sistema para una tienda que vende y repara equipos celulares
OBJETOS Y CLASES
En general, podemos tener una gran jerarquía de Clases tal y como vemos en el siguiente gráfico:
Características asociadas a la Orientación al Objeto. Abstracción
La abstracción consiste en captar las características esenciales de un objeto, así como su comportamiento. Por ejemplo, volvamos al ejemplo de los automóviles, ¿Qué características podemos abstraer de los automóviles? O lo que es lo mismo ¿Qué características semejantes tienen todos los automóviles? Todos tendrán una marca, un modelo, número de chasis, peso, llantas, puertas, ventanas, etc. Y en cuanto a su comportamiento todos los automóviles podrán acelerar, frenar, retroceder, etc. En los lenguajes de programación orientada a objetos, el concepto de Clase es la representación y el mecanismo por el cual se gestionan las abstracciones.
Características asociadas a la Orientación al Objeto. Encapsulamiento
El encapsulamiento consiste en unir en la Clase las características y comportamientos, esto es, las variables y métodos. La utilidad del encapsulamiento va por la facilidad para manejar la complejidad, ya que tendremos a las Clases como cajas negras donde sólo se conoce el comportamiento pero no los detalles internos, y esto es conveniente porque nos interesará será conocer qué hace la Clase pero no será necesario saber cómo lo hace.
Modificadores de clases
public: La clase es pública y por lo tanto accesible para todo el mundo. Sólo podemos tener una clase public por unidad de compilación, aunque es posible no tener ninguna. Ninguno: La clase es “amistosa”. Será accesible para las demás clases del package.(Se asume Public) final: Indicará que esta clase no puede “tener hijo”, no se puede derivar ninguna clase de ella. abstract: Se trata de una clase de la cual no se puede instanciar ningún objeto.
Ejemplos
Modificadores de Variables
public: Pública, puede acceder todo el mundo a esa variable.
Ninguno: Es “amistosa”, puede ser accedida por cualquier miembro del package. Para nosotros será equivalente a que fuese pública. protected: Protegida, sólo pueden acceder a ella las clases hijas de la clase que posee la variable y las que estén en el mismo package. private: Privada, nadie salvo la clase misma puede acceder a estas variables. Pueden acceder a ella todas las instancias de la clase (cuando decimos clase nos estamos refiriendo a todas sus posibles instancias) static: Estática, esta variable es la misma para todas las instancias de una clase, todas comparten ese dato. Si una instancia lo modifica todas ven dicha modificación. final: Final, se emplea para definir constantes, un dato tipo final no puede variar nunca su valor.
Modificadores de Métodos
Sobrecarga de Métodos
Java admite lo que se llama sobrecarga de métodos: puede haber varios métodos con el mismo nombre pero a los cuales se les pasan distintos parámetros. Según los parámetros que se le pasen se invocará a uno u otro método:
Ejemplos
Herencia
Implementación en Java
Implementación en Java
Tarea
Realice diagrama de clases e implemente en java (solo con mostrar información, sin archivos o ningún medio de almacenamiento.
Obtener el modelo conceptual de un sistema de información muy simplificado de una biblioteca. En ella aparecen socios, que se dan de alta en la biblioteca y a partir de ese momento pueden tomar prestados libros de la misma. Un socio está caracterizado por un número de socio, un nombre y una dirección; además, en cada momento se puede saber el número de libros que un socio tiene prestados, y si tiene más de diez libros. Por su parte, de cada libro se conoce su código, título, autor y si está o no disponible; además se puede saber en cualquier momento la localización del libro en la biblioteca, así como la signatura del mismo. Un libro puede ser cambiado de lugar, y se le puede cambiar igualmente su signatura; de hecho, siempre que se cambia la signatura de un libro es porque se cambia de lugar. Los libros se prestan a los socios, y como consecuencia aparece la noción de préstamo; un préstamo estará caracterizado, además de por el código del libro prestado y el número de socio, por la fecha del mismo. Por otra parte también se va a llevar control de los socios que tengan prestados más de 10 libros, de lo cual se encargará la aplicación program_SNF, haciendo que estos socios pasen a especializarse temporalmente en socios_no_fiables.
Constructores
Un objeto de una clase se crea llamando a una función especial denominada constructor de la clase. El constructor se llama de forma automática cuando se crea un objeto, para situarlo en memoria e inicializar los miembros dato declarados en la clase. class Rectangulo{ int x; int y; int ancho; int alto; Rectangulo(int x1, int y1, int w, int h){ x=x1; y=y1; ancho=w; alto=h; } }
Constructores
Una clase puede tener más de un constructor. Por ejemplo, el siguiente constructor crea un rectángulo cuyo origen está en el punto (0, 0).
Creación de Objetos Para
crear un objeto de una clase se usa la palabra reservada new. Por ejemplo, Rectangulo rect1=new Rectangulo(10, 20, 40, 80);
Acceso a los mienbros
Desde un objeto se puede acceder a los miembros mediante la siguiente sintaxis objeto.miembro;
Por ejemplo, podemos acceder al miembro dato ancho, para cambiar la anchura de un objeto rectángulo. rect1.ancho=100;
El rectángulo rect1 que tenía inicialmente una anchura de 40, mediante esta sentencia se la cambiamos a 100. Desde un objeto llamamos a las funciones miembro para realizar una determinada tarea. Por ejemplo, desde el rectángulo rect1 llamamos a la función calcularArea para calcular el área de dicho rectángulo. rect1.calcularArea();
Creando objetos
Tarea Mediante
la siguiente clase realice las operaciones de un cajero bancario