Sunteți pe pagina 1din 38

PROGRAMACIN

ORIENTADA A OBJETOS
Definicin de Clases

CLASE
Una clase, define un conjunto de elementos
que tienen atributos y comportamientos
comunes.

Pueden ser cosas tangibles: Pueden ser cosas intangibles:

MATRICULA

VEHICULO
COMPRA
CONSULTA
MDICA

ESTUDIANTE

EDIFICIO

DEFINICIN DE CLASE EN UML


En UML una clase se representa como un
rectngulo con tres secciones: (i) nombre,
(ii) atributos, (iii) mtodos
NOMBRE: Se escribe en singular y debe representar
claramente a la clase
ATRIBUTOS: se escriben en singular, con un nombre
corto. Debe indicarse el tipo al que pertenecen. Debe
indicarse la visibilidad
MTODOS: es un verbo en infinitivo, debe indicarse los
parmetros y el tipo
El mtodo
de iguales,
dato recibe
que dos
retorna. Debe
datos de tipo entero y retorna
iguales(int,
int) : boolean
indicarse
la visibilidad.
Ejemplo:
un booleano

DEFINICIN DE UNA CLASE


Para definir una clase, se establece: Nombre,
Atributos o Caractersticas y Mtodos o
Comportamientos

OBJETO

Son instancias (o casos) particulares de las clases


Todo objeto tiene los mismos atributos y mtodos que la clase
que lo define
Un objeto da valores particulares a los atributos de la clase
Objeto: Ferrari
Modelo: 2014
Peso: 585
VelocidadMaxima: 360

Objeto: ToroRosso
Modelo: 2014
Peso: 597
VelocidadMaxima: 362

Visibilidad

La visibilidad de un elemento (clase, atributo o mtodo)


establece quienes pueden tener acceso al elemento
public: Cualquier clasificador externo puede emplear el
elemento declarado pblico. Por ejemplo: si el atributo
nombre de la clase Estudiante se declara pblico, indica
que cualquier mtodo de otra clase puede modificarlo o
consultarlo. El smbolo es mas (+)
private: Solamente otros elementos dentro del mismo
clasificador pueden tener acceso al elemento declarado
privado. Por ejemplo: si el atributo nombre de la clase
Estudiante se declara privado, solamente otros mtodos
de la misma clase Estudiante pueden modificarlo o
consultarlo. El smbolo es menos (-)

ancho : Escritori
float
o
alto : float
profundidad : float
material : String
numero_cajones : int
+ retornaMedidas()
: String
+ retornaNumCaj ()
: int
+
calculaVolumen() :
float

Nombre

Atributos

Mtodos

Es una buena prctica de


programacin que los atributos
sean privados y los mtodos
pblicos

Clases y Objetos
https://www.youtube.com/watch?v=EOKT3p0nuzo
https://www.youtube.com/watch?v=c3t98hoV90I
https://www.youtube.com/watch?v=8UgQNQML_b8
https://www.youtube.com/watch?v=4EbOk9NMkc8
POO en JAVA
https://www.youtube.com/watch?v=nsPly37h9os

Mtodos Especiales

CONSTRUCTOR
No es considerado como un mtodo porque
solamente se ejecuta cuando se instancian
(crean) objetos de la clase
Su propsito es asignar valores iniciales a los
atributos cuando se crea un objeto de la clase
Puede contener toda clase de instrucciones
En JAVA: lleva el mismo nombre de la clase y no
tiene tipo de retorno
Si no se escribe, JAVA incluye un constructor por
defecto que no tiene parmetros (este se
adiciona al momento de compilar, entonces

EJEMPLO

Definir una clase caja que


contenga como atributo las
medidas de la caja y un mtodo
que pueda determinar el
volumen de la misma

Modelado
Caja
+ largo: float
+ ancho: float
+ alto : float
+ Caja (float, float,
float)
+ calcularVolumen():
float

Caja
- largo: double
- ancho: double
- alto : double
+ Caja (double, double,
double)
+ calcularVolumen():
double

public class Caja {

Implementaci
n
Caja
- largo: double
- ancho: double
- alto : double
+ Caja (double, double,
double)
+ calcularVolumen():
double

private
private
private

double
double
double

largo;
ancho;
alto;

public Caja(double largo_x,


double ancho_y, double
alto_z) {
largo = largo_x;
ancho = ancho_y;
alto = alto_z;
}
public double
calcularVolumen() {
double volumen;
volumen = largo * ancho *
alto;
return volumen;

Mtodos set y get


El dejar los atributos privados,
generara
problemas para acceder a ellos, ya que
solamente se pueden consultar o modificar
desde otros mtodos de la misma clase.
Para resolver el problema se incluyen unos
mtodos que ayudan en estas labores:
set: permite ingresar un valor al atributo
correspondiente. Recibe como parmetro un
dato del mismo tipo del atributo y no retorna
nada.
get: permite recuperar o consultar el valor del
atributo
correspondiente.
No
recibe
parmetros y retorno un dato del mismo tipo

Mtodo set
atributo: String cedula
public void setCedula(String cedula)
atributo: String nombre
public void setNombre(String nombre)
Mtodo get
atributo: String cedula
public String getCedula( )
atributo: String nombre
public String getNombre( )

Patrn de diseo: Bean

EJEMPLO

Definir una clase nmero que permita


determinar si el nmero contenido es
positivo o no y si es mltiplo de otro
nmero dado

Modelado
Numero
+ numero : int
+ isPositivo () :
boolean
+ multiploDe (int):
boolean

Modelado
Numero

Numero

+ numero : int
+ isPositivo () :
boolean
+ multiploDe (int):
boolean

- numero : int
Buena Prctica

+ setNumero (float):
void
+ getNumero (): int
+ isPositivo (): boolean
+ multiploDe (int):
boolean

Implementac
in

Numer
o: int
- numero
+ setNumero(int) :
void
+ getNumero () :
float
+ isPositivo () :
boolean
+ multiploDe (int):
boolean

Implementac
in

Numer
o: int
- numero
+ setNumero(int) :
void
+ getNumero () :
float
+ isPositivo () :
boolean
+ multiploDe (int):
boolean

RELACIONES ENTRE CLASES


Entre las clases pueden existir varios tipos de relaciones,
entre ellas:
DEPENDENCIA: Es una relacin de uso, implica que
una clase utiliza a la otra, sin embargo, un cambio en
la especificacin da una clase puede afectar a aquella
que la utiliza
Se representa con una flecha punteada
ASOCIACIN: Especifica que los objetos de una clase
incluyen o trabajan con objetos de otra. Puede incluir
nombre y multiplicidad (para indicar cuntos objetos
estn incluidos en la relacin
Se representa con una lnea continua

RELACIONES ENTRE CLASES


En el desarrollo de una aplicacin, debe tenerse
claro que cada Clase contenga los atributos y
mtodos que le corresponden
Esta caracterstica permite la reutilizacin de
cdigo y por consecuencia, se agiliza el desarrollo
de aplicaciones
En cada aplicacin quedar una clase PRINCIPAL
que se encarga de utilizar las otras clases. En
este caso, hay una relacin de dependencia entre
la clase Principal y la(s) clase(s) que ella utiliza

EJEMPLO

Definir una clase nmero que


permita determinar:
si el nmero contenido es
positivo o no
si el nmero contenido es
mltiplo de otro nmero dado

Modelado
Princi
pal
+ main(String
arg[]): void

Numero
- numero :
int
+ setNumero (int): void
+ getNumero (): int
+ isPositivo (): boolean
+ multiploDe (int):
boolean

Implementacin

public class Principal


NOTA No es una buena prctica crear
{
un objeto que se llame objeto debera
public static void main (String[] arg)
llamarse nmero, esto es solo para que
{
vean la diferencia y sepan crear objetos
Numero objeto= new Numero();
int numero1, numero2;
numero1= Integer.parseInt(JOptionPane.showInputDialog(Digite un numero));
objeto.setNumero(numero1);
if ( objeto.isPositivo() ) {
System.out.println(El nmero +objeto.getNumero()+ es positivo);
}
numero2 = Integer.parseInt(JOptionPane.showInputDialog(Digite otro numero));
if ( objeto.isMultiploDe(numero2)) {
System.out.println(El nmero + objeto.getNumero() + es mltiplo de +numero2);
}
}
}

public class Principal


{
public static void main (String[] arg)
{
Numero objeto= new Numero();
int numero1, numero2;
numero1= Integer.parseInt(JOptionPane.showInputDialog(Digite un numero));
objeto.setNumero(numero1);
if ( objeto.isPositivo() ) {
System.out.println(El nmero +objeto.getNumero()+ es positivo);
}
else {
System.out.println(El nmero +objeto.getNumero()+ NO es positivo);
}
numero2 = Integer.parseInt(JOptionPane.showInputDialog(Digite otro numero));
if ( objeto.isMultiploDe(numero2)) {
System.out.println(El nmero + objeto.getNumero() + es mltiplo de +numero2);
}
else{
System.out.println(El nmero + objeto.getNumero() + NO es mltiplo de +numero2);
}
}
}
}

Implementacin

Implementacin
public class Numero {
private int numero;
public Numero ()
{
numero = 0;
}
public Numero (int n)
{
numero = n;
}
void setNumero(int n)
{
numero = n;
}

int getNumero()
{
return numero;
}
boolean isPositivo ()
{
return numero>=0;
}
boolean isMultiploDe (int n)
{
return numero%n==0;
}
}

Implementacin
Clase Numero
public class Numero {
int getNumero()
private int numero;
Atributo numero
{
Mtodo
public Numero ()
return numero;
GET
{
Constructor
}
numero = 0;
boolean isPositivo ()
}
{
public Numero (int n)
return numero>=0;
{
Constructor
}
numero = n;
Mtodo
boolean isMultiploDe (int n)
}
Adicionales
{
return numero%n==0;
void setNumero(int n)
}
{
Mtodo
numero = n;
SET
}
}

Implementacin (Diagrama de Clase +


Cdigo)
public class Numero {
private int numero;
public Numero ()
{
numero = 0;
}
public Numero (int n)
{
numero = n;
}
void setNumero(int n)
{
numero = n;
}

Nume
ro :
- numero
int

+ Numero()
+ Numero(int)
+ setNumero (int):
void
+ getNumero (): int
+ isPositivo ():
boolean
+ multiploDe (int):
boolean

int getNumero()
{
return numero;
}
boolean isPositivo ()
{
return numero>=0;
}
boolean isMultiploDe (int n)
{
return numero%n==0;
}
}

public class Principal


//Esta es la clase que tiene el main, se llama Principal.
{
//Abro llave de la Clase Principal
public static void main (String[] arg)
//Declaro el main de la clase Principal
{
//Abro llave del main
Numero objeto= new Numero();
//Creo un objeto llamado objeto de la clase Numero (ojo primera letra)
int numero1, numero2;
//Creo las variables numero1 y numero2 de tipo entero (int)
numero1= Integer.parseInt(JOptionPane.showInputDialog(Digite un numero)); //Leo numero1
objeto.setNumero(numero1);
//Guardo numero1 en la viariable numero del objeto usando el mtodo set
if ( objeto.isPositivo() ) {
//Invoco el metodo isPositivo() que devuelve un bololean.
System.out.println(El nmero +objeto.getNumero()+ es positivo);
}
else {
//Si la condicion no se cumple, es decir, si objeto.isPositivo() == false
System.out.println(El nmero +objeto.getNumero()+ NO es positivo);
}
numero2 = Integer.parseInt(JOptionPane.showInputDialog(Digite otro numero));
if ( objeto.isMultiploDe(numero2)) {
//Invoco el metodo isMultiploDe(int) que devuelve un bololean
System.out.println(El nmero + objeto.getNumero() + es mltiplo de +numero2);
}
else{
//Si la condicion no se cumple, es decir, si isMultiploDe(int) == false
System.out.println(El nmero + objeto.getNumero() + NO es mltiplo de +numero2);
}
}
}
}

EJEMPLO

Desarrollar un clase para el manejo de la tarjeta del


MIO
Debe permitir los siguientes operaciones
- Compra de tarjeta y registro de los datos del
Usuario - Personalizacin
- Cobro del pasaje al subir al bus
- Prstamo de un pasaje como mximo, solo uno si
el saldo es igual o superior a cero
- Recargar la tarjeta con un valor dado, cobrando el
dinero prestado
- Consulta el saldo

EJERCICIOS

1. Desarrollar una clase denominada CUENTABANCARIA


que permite llevar el control de una cuenta bancaria.
Esta clase debe permitir realizar las siguiente
operaciones:
Crear una cuenta con un saldo inicial en 0, la fecha
en que se abre la cuenta, el nombre y cedula de la
persona duea de la cuenta.
Consultar cual es la fecha de la ltima transaccin
realizada, sea consignacin o retiro.
Retirar dinero de la cuenta, siempre que se tenga
saldo disponible.
Consignar dinero en la cuenta.
Consultar el saldo de la cuenta en cualquier
momento.
Diariamente se debe incrementar los intereses
ganados

EJERCICIOS

2. Desarrollar una clase para el manejo de una


BIBLIOTECA. La Biblioteca tiene el siguiente Material
Bibliogrfico Libros, CD, Enciclopedias, Colecciones y
Artculos. En la aplicacin, debe ser posible realizar las
siguientes operaciones:
Adicionar Material Bibliogrfico a la Biblioteca, debe
estar en una de las opciones de Material
Bibliogrfico
Prestar Material Bibliogrfico, en este caso debe
quedar en estado de prstamo.
Devolver Material Bibliogrfico, en este caso debe
volver a estado disponible.
Consultar Material Bibliogrfico(Uno, todos los de
un tipo y todo lo de la biblioteca)
Consultar disponibilidad el Material Bibliogrfico

public class RelojAnalgico{


//Atributos
int horas;
int minutos;
int segundos;
//Constructores
RelojAnalogico(){ }
RelojAnalogico(int, int, int){ }
//Metodos set y get
void setHoras(int){ }
int getHoras(){ }
void setMinutos(int){ }
int getMinutos(){ }
void setSegundos(int){ }
int getSegundos({ }
//Mtodos
void incrementarHoras(){ }
void incrementarMinutos(){ }
void incrementarSegundos(){ }
}

//CONSTRUCTORES
public class RelojAnalgico{
public RelojAnalgico(){ }
public RelojAnalgico(int h, int m, int s)
{
this.horas = h;
this.minutos= m;
this.segundos = s;
}
//METODOS set y get (solo para horas)
public void setHoras(int horas){
this.horas = horas;
}
public int getHoras(){
return horas;
}
}

public class RelojAnalgico{


//Atributos
int horas;
int minutos;
int segundos;
//Constructores
RelojAnalogico(){ }
RelojAnalogico(int, int, int){ }
//Metodos set y get
void setHoras(int){ }
int getHoras(){ }
void setMinutos(int){ }
int getMinutos(){ }
void setSegundos(int){ }
int getSegundos({ }
//Mtodos
void incrementarHoras(){ }
void incrementarMinutos(){ }
void incrementarSegundos(){ }
}

//MTODOS
public void incrementarHoras(){
if (getMinutos() == 60) {
setMunutos(0);
setHoras(getHoras() + 1);
}
}
public void incrementarMinutos(){
if (getSegundos() == 60) {
setSegundos(0);
setMinutos(getMinutos() + 1);
}
}
public void incrementarHoras(){
setSegundos(getSegundos() + 1);
}

public class Carro{


//Atributos
String marca;
int kilometraje;
String color;
int velocidad;
RelojAnalogico reloj;
//Mtodos
void encender(){ }
void acelerar(int){ }
void apagar(){ }
void frenar(int){ }
void girarIzquierda(){ }
void girarDerecha(){ }
}

//CONSTRUCTORES
public class Carro{
public Carro(){ }
public Carro(String marca)
{ // El constructor tiene solo un,
parametro en este caso marca
this.marca = marca;
velocidad = 0;
reloj = new RelojAnalogico();
}
public Carro(String marca, String colour)
{ // El constructor tiene dos parametros,
en este caso marca y color
this.marca= marca;
this.color = colour;
velocidad = 0;
reloj = new RelojAnalogico(12, 0, 0);
}
}

public class Carro{


//Atributos
String marca;
int kilometraje;
String color;
int velocidad;
RelojAnalogico reloj;
//Mtodos
void encender(){ }
void acelerar(int){ }
void apagar(){ }
void frenar(int){ }
void girarIzquierda(){ }
void girarDerecha(){ }
}

//MTODOS
public void encender(){
}
public void acelerar(int velocidad){
setVelocidad(getVelocidad() + velocidad);
}
public void apagar(){
if (getVelocidad() > 0){
setVelocidad(getVelocidad())
}
}
public void frenar(int velocidad){
if (getVelocidad() > 0){
setVelocidad(getVelocidad() - velocidad);
}
}
public void girarIzquierda(int velocidad){
}
public void girarDerecja(int velocidad){
}
public void setVelocidad(int velocidad){
this.velocidad = velocidad;
}
public int getHoras(){
return velocidad;
}

public class Principal{


public static void main (String[] arg)
//Declara el main de la clase Principal
{
//Abre llave del main
int horas,minutos, segundos;
//Declaracin de variables
Carro miCarro= new Carro();
//Crea un objeto llamado miCarro de la clase Carro
Carro tuCarro= new Carro(Mini Cooper);
//Crea un objeto tuCarro, es de marca Mini Coop
Carro elCarro= new Carro(Lamborghini, Rojo); //Crea un objeto elCarro, marca Lamborgh
RelojAnalogico reloj= new RelojAnalogico(); //Crea un objeto reloj, de la clase RelojAnalogico
RelojAnalogico otroReloj= new RelojAnalogico(11, 25, 0);//Crea un objeto otroReloj, con hora 1
miCarro.setMarca(Ferrari);
//Define la marca de mi carro como Ferrari
miCarro.setMarca(Ferrari);
//Define la marca de mi carro como Ferrari
tuCarro.encender();
//Enciende tuCarro
tuCarro.acelerar(50);
//Acelera tu carro a velocidad 50
int vel = tuCarro.getVelocidad(); //guarda en vel la velocidad del carro (Ojo con el return del mtod
tuCarro.apagar()
//Apaga el carro.
reloj.setHoras(otroReloj.getHoras()); //Almacena las horas de otroReloj en reloj
otroReloj.setHoras(7);
//Modifica la hora de otro reloj a 7
tuCarro.reloj.setHoras(reloj.getHoras());
//Modifica las horas del reloj de tuCarro
tuCarro.reloj.setMinutos(otroReloj.getMinutos()); //Modifica los minutos del reloj de tuCarro
tuCarro.reloj.setSegundos(otroReloj.getSegundos()); //Modifica lo segundosdel reloj de tuCarro
horas = tuCarro.reloj.getHoras();
//Obtiene en horas las horas del reloj de tuCarro
minutos = 35;
//Asignacion
segundos = otroReloj.getSegundos(); //guarda los segundo de otro reloj en la variable segundos
}

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