Vous êtes sur la page 1sur 55

Programacin Orientada a Objetos

utilizando

JAVA

Clase
Figura
x

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

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

static cuenta

asignaColor()
indicaColor()

autoDeportivo

static Contador()
color
Automovil()
asignaColor()
indicaColor()

Mtodos y Propiedades de Clase

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");
}
}

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

Clases

Subclases

Paquete

Todas

public

si

si

si

si

protected

si

si

si

package

si

private protected

si

private

si
La misma
clase llama
al mtodo

si
si

La subclase
llama al
mtodo

Las clases del


mismo paquete
llaman al mtodo

Cualquier
clase llama
al mtodo

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

Triangulo

pinta()

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

Triangulo

radio

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

Vous aimerez peut-être aussi