Sunteți pe pagina 1din 55

Programacin Orientada a Objetos

utilizando

JAVA

Clase
Figura x y

despliega()

mueve()

Una Clase es un conjunto de propiedades (datos) y mtodos (procesos) relacionados entre si. Grficamente se representa con un cuadro con puntas redondeadas, su nombre generalmente se escribe con una letra inicial mayscula y las restantes minsculas, si aparece ms de una palabra, el inicio de cada una se escribe con una mayscula, por ejemplo: Persona, Figura, AnimalAcuatico

Propiedad

nombre

Una Propiedad o Variable es un dato de Tipo Primitivo (TDP) o un objeto. Por ejemplo, una variable x, nombrePersona, imagen, archivo. Grficamente representamos a una propiedad como un rectngulo su nombre generalmente se escribe con minsculas,si aparece ms de una palabra, al inicio de cada una se escribe letra mayscula

Objeto
circulo x y

despliega()

mueve()

Un Objeto es una instancia (caso particular) de una clase. El nombre de un objeto es una referencia hacia las propiedades y mtodos. Un objeto apunta hacia propiedades y mtodos y es relocalizable, esto significa que No apunta hacia una direccin de memoria especfica. Grficamente se representa de forma similar que una clase la diferencia es que generalmente el nombre de un objeto se inicia con minsculas.

Objetos de la Clase Automovil


class Agencia { public static void main(String args[]) { // OBJETOS Automovil autoDeportivo = new Automovil(); Automovil camioneta = new Automovil(); // INVOCACIN DE MTODOS autoDeportivo.asignaColor("azul"); camioneta.asignaColor("rojo"); System.out.println("autoDeportivo color " + autoDeportivo.indicaColor()); System.out.println("camioneta color " + camioneta.indicaColor()); } }

Mtodo
despliega()
Un Mtodo es un proceso abstracto y contiene un conjunto finito de instrucciones. Es decir, un fragmento de cdigo al que se llama, acompaado de unos datos de entrada, y produce una determinada salida. Para esto tenemos que indicar el tipo de los primitivos de entrada, el tipo de los de salida, el nombre del mtodo y el trabajo que realizara.
[tipodatoSalida] [nombreMtodo] ([tipodatoEntrada] [nombredatoEntrada]) { //Codigo del mtodo return datoSalida; } int sumaCinco(int entrada) { return entrada + 5; }

Grficamente representamos a un mtodo con un crculo, su nombre es similar al de las propiedades y termina con parntesis donde van los parmetros. Al conjunto de mtodos de una clase se le llama la Interfase de la Clase. Las clases y mtodos de Java se encuentran descritos en la API (Application Program Interface) java.sun.com/api

Clase Automovil
class Automovil { // PROPIEDADES String color ; int velocidadMaxima ; // MTODOS void asignaColor(String _color) { color = _color; } String indicaColor() { return color; } }

Constructor
Figura

Figura()
Un Constructor es un mtodo pblico que lleva el mismo nombre de la clase a la que pertenece.

Se ejecuta automticamente cuando se crea una instancia de la clase (objeto), generalmente el desarrollador lo utiliza para asignar valores iniciales a las propiedades del objeto. En Java automticamente cada clase tiene un constructor con el mismo nombre de la clase sin argumentos de entrada. Si el usuario escribe su propio constructor entonces debe utilizarlo.

Clase Automovil con un Constructor


class Automovil { String color ; Automovil(String _color) { color = _color; } void asignaColor(String _color) { color = _color; } String indicaColor() { return color; } } class Autos { public static void main(String args[]) { // OBJETOS DE LA CLASE Automovil USANDO EL CONSTRUCTOR Automovil autoDeportivo = new Automovil("azul"); Automovil camioneta = new Automovil("rojo"); System.out.println("autoDeportivo color " + AutoDeportivo.indicaColor()); System.out.println("camioneta color " + Camioneta.indicaColor()); } }

Sobrecarga de mtodos
Figura

Figura()

Figura(String)

La Sobrecarga se da cuando se usa en una misma clase, el mismo nombre de un mtodo pero con diferentes argumentos. Las operaciones de los mtodos, generalmente, son diferentes. Cualquier mtodo en una clase es posible sobrecargarlo, tanto los constructores como los mtodos de clase o de instancia

Sobrecarga de mtodos
class Automovil { String color ;

Automovil() { color = "blanco"; } Automovil(String _color) { color = _color; }


void asignaColor(String _color) { color = _color; } String indicaColor() { return color; } } class Autos { public static void main(String args[]) { Automovil autoDeportivo = new Automovil("azul"); Automovil camioneta = new Automovil(); System.out.println("autoDeportivo color " + AutoDeportivo.indicaColor()); System.out.println("camioneta color " + Camioneta.indicaColor());

}
}

Propiedades y Mtodos de Clase


Automovil static cuenta color Automovil() static Contador() asignaColor()

indicaColor()

Las Propiedades y Mtodos de Clase se crean una sola vez en cada clase y los comparten los objetos (instancias) de esa clase. Se identifican porque los precede la palabra reservada static.

Propiedades y Mtodos de Clase en Ejecucin


camioneta

color Automovil() Automovil asignaColor() indicaColor()

static cuenta static Contador()

autoDeportivo

color Automovil() asignaColor() indicaColor()

class Automovil { String color ; // PROPIEDAD DE INSTANCIA static int cuenta; // PROPIEDAD DE CLASE // CONSTRUCTORES Automovil() { color = "blanco"; cuenta++; } Automovil(String _color) { color = _color; cuenta++; } // METODOS DE INSTANCIA void asignaColor(String _color) { color = _color; } String indicaColor() { return color; } // METODO DE CLASE static void contador() { System.out.println("Creadas " + cuenta + " instancias"); } }

Mtodos y Propiedades de Clase


class Autos { public static void main(String args[]) { // SE INVOCA AL METODO DE CLASE SIN CREAR OBJETO Automovil.contador(); Automovil autoDeportivo = new Automovil(); // EL METODO DE CLASE INVOCADO DESDE UN OBJETO autoDeportivo.contador(); Automovil camioneta = new Automovil("rojo"); camioneta.contador(); System.out.println("autoDeportivo color " + autoDeportivo.indicaColor()); System.out.println("camioneta color " + camioneta.indicaColor()); Automovil.contador(); } }

Accesibilidad
Accesibilidad public protected package private protected private Clases si si si si si La misma clase llama al mtodo La subclase llama al mtodo Las clases del mismo paquete llaman al mtodo Cualquier clase llama al mtodo si Subclases si si Paquete si si si Todas si

La Accesibilidad se indica con el calificador public, private, protected o abstract en las propiedades y mtodos de una clase.

Relaciones entre Clases:

Herencia
Composicin Agregacin

Las relaciones entre clases permiten la reutilizacin de cdigo

Herencia
Persona

Alumno

Profesor

La Herencia es una relacin entre clases en donde la subclase clase hereda las propiedades y mtodos de la superclase. Se representa mediante relaciones es_un con una flecha con punta hueca dirigida de la clase derivada a la superclase.

Obtencin de las relaciones de herencia

Las Relaciones de Herencia se obtienen mediante la generalizacin y la especializacin. La Generalizacin se hace a partir de un conjunto de clases y se busca una clase que las generaliza (agrupa). La Especializacin se genera cuando a partir de una clase genrica se obtienen clases que son casos particulares de la misma.

Herencia de Persona a Alumno


class Persona { String nombre ; Persona(String _nombre) { nombre = _nombre; } String indicaNombre() { return nombre; } } class Alumno extends Persona { int calificacion ; Alumno(String _nombre) { super(_nombre); } void asignaCalificacion(int _calificacion) { calificacion = _calificacion; } String indicaDatos() { return "Alumno: " + super.indicaNombre() + " calificacion: " + calificacion; }

Sobreescritura
Figura
pinta()

Circulo
pinta()

Triangulo

Se le llama Sobreescritura cuando un mtodo existente en una superclase se declara en una subclase y ambos tienen el mismo nombre, en este caso el mtodo de la clase derivada sobreescribe a la superclase. En este ejemplo el mtodo pinta() de Circulo sobrescribe al de Figura mientras que Triangulo utiliza el mtodo pinta() que hereda de Figura

Sobreescritura del mtodo indicaNombre()


class Persona { String nombre ; Persona(String _nombre) { nombre = _nombre; } String indicaNombre() { return nombre; } } class Alumno extends Persona { int calificacion ; Alumno(String _nombre) { super(_nombre); } String indicaNombre() { return Alumno + nombre; } void asignaCalificacion(int _calificacion) { calificacion = _calificacion; } String indicaDatos() { return "Alumno: " + super.indicaNombre() + " calificacion: " + calificacion; } }

Polimorfismo
Figura x y color pinta()

Circulo radio

Triangulo

Cuadrado lado pinta()

pinta()

Isoceles
base altura pinta()

El Polimorfismo se da cuando un mtodo aparece en dos clases diferentes con el mismo nombre y argumentos.

El comportamiento generalmente es diferente

Polimorfismo
// DECLARA EL ARREGLO DE OBJETOS Figura arreglo[] = new Figura[6]; // DETERMINA QUE OBJETO SE ALMACENA EN CADA ELEMENTO arreglo[0] = new Circulo(20,30,10 ,Color.blue); arreglo[1] = new Triangulo(50,220,Color.red); arreglo[2] = new Circulo(200,100,40 ,Color.cyan); arreglo[3] = new Cuadrado(120,40,30,Color.green); arreglo[4] = new Triangulo(250,70,Color.gray); arreglo[5] = new Isoceles(173 ,204 ,50 ,66 ,new Color(0100 ,150 ,0xFF)); // LLAMA AL METODO pinta PARA CADA ELEMENTO APLICANDO POLIMORFISMO for(int i=0; i < arreglo.length; i++)

arreglo[i].pinta();

Composicin
Automovil

Chasis

Motor

Llanta

Composicin
Motor

Automovil

Chasis

Llanta

La Composicin consiste en incluir (o formar) una clase a otra(s) como una propiedad para crear clases complejas. En este caso se reutiliza la interfase de las clases componente. Las clases estn unidas mediante la relacin parte_de con una flecha con punta de rombo. Los objetos que lo componen son privados

Composicin
class Automovil { String marca ; Motor motor ; Chasis chasis ; Llanta llanta[] = new Llanta[4];

Automovil(String _marca) { marca = _marca; motor = new Motor(4); chasis = new Chasis(azul); for( int i = 0; i < llanta.length; i++ ) llanta[i] = new Llanta(deportiva); } void asignaMotor(Motor _motor) { motor = _motor; } }

Agregacin

Bosque

Arbol

La Agregacin es una relacin que permite crear clases complejas mediante la agrupacin de una coleccin de una clase existente (es una forma ms dbil que la composicin). Las clases estn unidas mediante la relacin parte_de con una flecha con punta de rombo hueca. En Java las implementaciones de Collection son ejemplos de esta relacin

Paquetes
Escuela
Alumno Materia

Profesor

Salon

Un Paquete agrupa a un conjunto de clases se indica en un programa con la palabra reservada import subdirectorio1.subdirectorio2.clase En la variable de ambiente CLASSPATH debe estar la ruta de la ubicacin de las clases que forman al paquete subdirectorio1\subdirectorio2

S-ar putea să vă placă și