Vous êtes sur la page 1sur 62

Rosa Iliana Fuentes Cruz

Unidad de Aprendizaje: Programacin Orientada a Objetos


Es un paradigma del desarrollo de software ampliamente
. utilizado en la poca actual
ya que permite tratar la complejidad mediante la divisin del problema en elementos
manejables como son los objetos y las clases mismos que representan escenarios
del mundo real de modo fcil y natural.

Al escribir un programa en un lenguaje orientado a objetos tratamos de modelar un


problema del mundo real pensando en objetos que forman parte del problema y que
se relacionan entre s.
La POO viene de la evolucin . de la programacin
estructurada; simplifica la programacin con la nueva
filosofa y nuevos conceptos que tiene. Se basa en la
dividir el programa en pequeas unidades lgicas de
cdigo. A estas pequeas unidades lgicas de cdigo se
les llama objetos. Los objetos son unidades
independientes que se comunican entre ellos mediante
mensajes.
Fomenta la reutilizacin y extensin
. del cdigo.
Permite crear sistemas ms complejos.
Relacionar el sistema al mundo real.
Facilita la creacin de programas visuales.
Construccin de prototipos
Agiliza el desarrollo de software
Facilita el trabajo en equipo
Facilita el mantenimiento del software
.

Objetos

Programacin
Orientada a
Objetos
Envi de Clases
Mensajes
Qu es un Objeto en el Mundo Real?
Un objeto del mundo real es cualquier cosa que vemos a nuestro
alrededor.
Internamente, cada uno de estos componentes puede ser
sumamente complicado y puede ser fabricado por diversas
compaas con diversos mtodos de diseo. Pero nosotros no
necesitamos saber cmo trabajan cada uno de estos
componentes y la forma en como interactan.
Qu es un Objeto en la Programacin?
La programacin orientada a objetos trabaja de esta manera. Todo el programa est
construido en base a diferentes componentes (Objetos), cada uno tiene un rol especfico
en el programa y todos los componentes pueden comunicarse entre ellos de formas
predefinidas.
Todo objeto del mundo real tiene 2 componentes: caractersticas (Atributos) y
comportamiento (Mtodo).

Marca = Ford
Modelo = Focus
Color = Azul
Velocidad Mxima = 260 km/h
Las Clases en el Mundo Real
En el mundo real, normalmente tenemos muchos objetos del mismo tipo. Por
ejemplo, nuestro telfono celular es slo uno de los miles que hay en el mundo. Si
hablamos en trminos de la programacin orientada a objetos, podemos decir que
nuestro objeto celular es una instancia de una clase conocida como "celular". Los
celulares tienen caractersticas y comportamientos .
Las Clases en la Programacin
La clase es un modelo o prototipo que define las variables y mtodos comunes a
todos los objetos de cierta clase. Tambin se puede decir que una clase es una
plantilla genrica para un conjunto de objetos de similares caractersticas.
Por otro lado, una instancia de una clase es otra forma de llamar a un objeto.
Es decir, es la representacin abstracta que describe a un conjunto de objetos,
es decir, representa a un conjunto de objetos que tienen en comn la misma
estructura (atributos) y comportamiento (mismas funciones).

Atributos (Datos) Estado


Mtodos (Algoritmos) Comportamiento
En general, es posible crear una clase a partir de cualquier objeto que est a nuestro alrededor.
Por ejemplo:

Persona
Automvil
Mascota
Un objeto es intil si est aislado. El medio empleado para que un objeto
interacte con otro son los mensajes. Hablando en trminos un poco ms
tcnicos, los mensajes son invocaciones a los mtodos de los objetos.
Cada clase se representa con un rectngulo, que define 3 secciones.
Para la clase persona: Persona Nombre de
la clase

El signo que precede al nombre de los + puesto: String


atributos o mtodos, en este caso + + nombre: String Atributos
representa cmo se puede acceder a un + sueldo: double
miembro de una clase. (Existen diferentes
tipos, se vern posteriormente)
+aceptaDatos():
+ significa acceso publico si se declara +despliega(): Mtodos
como public, el cdigo contenido en su (operaciones)
clase y todas las clases de otros paquetes
pueden accesar el campo.

Modificadores
de acceso
class nombre de la clase
Una clase se declara mediante la
{
palabra clave class, la forma general de
definir una clase es la siguiente: Tipo variable de instancia1;
Tipo variable de instancia2;
Tipo variable de instanciaN;

Tipo nombre del metodo1(lista de parmetros)


{
// cuerpo del mtodo
}
Tipo nombre del mtodo2(lista de parmetros)
{
// cuerpo del mtodo
}}
Las variables definidas en una clase se llaman variables de instancia porque cada instancia de
clase, es decir, cada objeto de la clase contiene su copia de esas variables. Por lo tanto, los
datos de un objeto estn separados y son individuales de los datos de otro objeto.

Las clases adems de estar formadas por variables de instancia tambin tienen como
contenido mtodos. La mayora de las veces, los mtodos se utilizan para acceder a las
variables de instancia definidas dentro de la clase.
La clase persona define 3 variables de instancia: Puesto, Nombre y sueldo, adems contiene 2
mtodos: pideDatos( ) y despliega( ) el cual es almacenado con el nombre: persona.java.

Persona

+ puesto: String
+ nombre: String
+ sueldo: double

+aceptaDatos():
+despliega():
}

void despliega()
{
System.out.println(puesto : " + puesto );
System.out.println("nombre : " + nombre);
System.out.println("sueldo : " + sueldo);
} }
Es importante recordar que la declaracin de una clase solamente crea una plantilla, no un
objeto real. En el cdigo siguiente tenemos otra clase llamada prinper, el cual se almacena
con el nombre prinper.java, desde dicho cdigo vamos a acceder a las variables de instancia y
mtodos de la clase caja

En el cdigo siguiente tenemos otra clase


llamada prinper, el cual se almacena con el class prinper
nombre prinper.java, desde dicho cdigo {
vamos a acceder a las variables de instancia y public static void main(String [] args)
mtodos de la clase caja {
persona per1= new persona();
per1.pideDatos();
per1.despliega();
}
}
Es importante hacer notar que con la instruccin
persona per1 = new persona(); se declara y crea un objeto persona llamado per1

Estamos creando una instancia llamada per1 de la clase persona el operador new asigna
automticamente memoria para un objeto creado y por ltimo el nombre de la clase seguido de
parntesis especifica el constructor de la clase.

Donde tipo especifica el tipo de dato que devuelve el mtodo. Puede ser de cualquier tipo valido,
incluyendo los tipos de clases que crea el programador. Si el mtodo no devuelve no devuelve un
valor, el tipo ser void.
La primera lnea invoca al mtodo pideDatos( ) del objeto per1, observe que entre el objeto y el
mtodo es necesario indicar el operador punto ( . ), adems que es de tipo void, lo cual indica
que no regresar ningn valor, dentro de este mtodo estn incluidas las instrucciones para
aceptar datos, los cuales son almacenados en las variables de instancia.

Por ltimo utilizamos el mtodo per1.despliega( ) donde son desplegados los datos contenidos
en las variables de instancia.
Como se dijo anteriormente, las clases estn formadas por variables de instancia y mtodos. La
mayora de las veces, los mtodos se utilizan para acceder a las variables de instancia definidas
por la clase.
La forma general de un mtodo es la siguiente:

Tipo_dato_retorno nombre_mtodo (lista de parmetros)


{
//variables_locales (opcional)
// instrucciones Cuerpo del mtodo, delimitado por { }
// sentencia_retorno (opcional)
}
En tipo_dato_retorno, es lo que el mtodo puede regresar una vez que haya terminado el
conjunto de instrucciones que estn en el cuerpo del mtodo y puede ser:
void :equivale a nada( no retorna nada el mtodo)
Un tipo de dato primitivo(int, char, String,etc), objetos, un arreglo, etc.
nombre_mtodo es el identificador. Por convencin, se escribe en minsculas. El nombre
deber representar de forma muy general al conjunto de instrucciones para el cual el mtodo
est diseado, por ejmplo: suma() : indicar que el conjunto de instrucciones del mtodo
tendrn como funcin realizar una suma de operandos.
En lista_parmetros se puede declarar entre los parntesis una lista de variables separadas por
coma (parmetros). Cuando el mtodo es llamado, se le pasa una lista de expresiones
conocidas como argumentos.
variables locales: Su alcance se restringe al cdigo del mtodo o de la instruccin. Una vez
terminado el mtodo, las variables locales dejan de existir.
Una sentencia_retorno consiste en la palabra return seguida por una expresin.
return expresin ;
La expresin debe coincidir con tipo_dato_retorno del mtodo. Si el mtodo tiene un tipo de
retorno diferente a void, la ejecucin debe terminar siempre con la sentencia return.
Programa que dependiendo del sueldo de un empleado aplica un aumento. Si es mayor a
10000 aplica un 10% , de lo contrario aplica un 40%.
Class Empleado{
String nombre;
double sueldo;
double nsueldo;

//Creacion de los metodos

void aceptaDatos(){
System.out.println("Teclea el nombre");
nombre=Leer.dato();
System.out.println("Teclea el sueldo");
sueldo=Leer.datoDouble();
}
double sueldo1() {
nsueldo=sueldo+(sueldo*0.10);
return nsueldo;
}
double sueldo2(){
nsueldo=sueldo+(sueldo*0.40);
return nsueldo;
}
}//de la clase
class mainEmpleado{
public static void main(String args[]){
double sueldoLocal=0.0;
final double ISR=0.02; // declaracin de una constante

Empleado oEmpleado=new Empleado();


oEmpleado.aceptaDatos();

If (oEmpleado.sueldo>10000) {
System.out.println("Tienes un aumento del 10%");
sueldoLocal=oEmpleado.sueldo1();
}
else {
System.out.println("**Tienes un aumento del 40%**");
sueldoLocal=oEmpleado.sueldo2();
}

System.out.println("El empleado: " + oEmpleado.nombre);


System.out.println("Su sueldo es de:" + oEmpleado.sueldo);
System.out.println("Su nuevo sueldo es de:" + sueldoLocal);
System.out.println("Impuesto:" + sueldoLocal* ISR);
}
Un Constructor tiene la siguientes caractersticas:
Debe tener el mismo nombre de la clase.
Se encarga de inicializar el estado del objeto (inicializa todas las variables de la clase).
No debe declararse con un tipo de dato de retorno.
Si no se declara un constructor, el compilador crea un constructor por omisin con una lista
de parmetros vaca.
class Auto {
int modelo;
int precio;
String marca;

// declaramos constructor
Auto(int modelo_m,int precio_m,String marca_m) {
modelo=modelo_m;
precio=precio_m;
marca=marca_m;
} Lista de parmetros del constructor

void printDatos() {
System.out.println("El modelo es:" + modelo);
System.out.println("El precio es:" + precio);
System.out.println("La marca es:" + marca);
}
}
class mainAuto
{
public static void main(String args[])
{
Auto oAuto=new Auto(2010,50000,Civic);
oAuto.printDatos();
}
} Se invoca al constructor y se le mandan como
argumentos 2010,50000, Civic
En la empresa X hay varios empleados, por cada empleado se tienen los datos: Nombre, Num
de hrs trabajadas y la cuota que se le paga por hra trabajada.
Cada quincena se requiere emitir un cheque con los datos: nombre del empleado y sueldo
que se le debe pagar. El sueldo se calcula multiplicando hrs trabajadas por cuota por hra.
Resumen:
Informacin que debe imprimir: Nombre y sueldo
Datos que deben leer: Nombre, horas trabajadas y cuota por hora.
Proceso: Calcular sueldo=horas trabajadas x cuota por hora.
Identificar objetos
Para esto se debe analizar el caso. Se buscan los sustantivos presentes en la especificacin;
los sustantivos son los objetos. En este problema son los empleados.
Representar la clase y mtodos a realizar para este problema.
Proceso para mantener ocultos los detalles de la implantacin de un objeto al resto de
los objetos o partes de un sistema.
El encapsulamiento relaciona datos con el cdigo que opera sobre los mismos. Al hablar
de encapsulamiento, se debe mencionar el control de acceso sobre los miembros de
una clase:
Control de acceso:
A travs de ste mecanismo se pueden controlar el acceso de los miembros de la clase
(variables y mtodos) desde las diferentes partes de un programa y de esta forma
impedir un mal uso del mismo.
Cuando se habla de control de acceso se esta refiriendo a los especificadores de acceso (
determinan cmo se puede acceder a un miembro de una clase). Se puede declarar, un
campo con un acceso especfico: public, private o protected :

public Si se declara como public, el cdigo contenido en su clase y todas las clases de otros
paquetes pueden accesar el campo

private Si se declara como private, slo el cdigo contenido en su clase puede accesar el
campo

protected Se aplica a un campo en el caso de que se trabaje con herencia.


Retomando el diseo de una clase se deben hacer 2 cosas.
1. Definir los datos que representaran a los objetos de la clase. Los cuales son de dos
tipos: uno esta formado por datos que entraran como materia prima, es decir, que
se debern leer a travs de los dispositivos de entrada. El otro tipo son los datos
que se generan.
2. Definir los mtodos que implementaran las acciones de los objetos. Son de dos
tipos: uno esta formado por los mtodos que colocan o establezcan (set) valores a
los datos del objeto; ya sea a travs de leerlos o mediante clculos. El otro tipo
esta compuesto de los mtodos que acceden u obtienen (get) los valores de los
datos para utilizarlos.
public class MiEdad
{
private int edad;

public void setEdad(int e)


{
edad = e;
}
public int getEdad()
{
return edad;
}
}
class prinEdad
{
public static void main(String[] args)
{
Edad me = new Edad();
me.setEdad(30);
System.out.println(Mi edad es:" + me.getEdad());
}
}
Obtener el nombre, cdula y tipo de empleado de 3 empleados , mostrar el sueldo
dependiendo del tipo de empleado.
Si el tipo de empleado es :
cEmpleado
1 sueldo = 1000000
2 sueldo = 1500000 -nombre: (String)
-cedula: (int)
3 sueldo = 4000000 -tipoEmpleado: (int)
otro sueldo = 800000 +desplegarNombre: void
+desplegarCedula: void
+desplegarSueldo: void
Creando la clase
Creamos una nueva clase Java llamada cFraccion
Definiendo los atributos.

public class cFraccion


{
private int numerador;
private int denominador;
}
Obtener parte entera

Dividimos de manera entera el numerador entre el


denominador y regresamos el resultado.
Es la definicin de una clase en funcin de otra, esto es, una clase es como otra y adems
tiene algn tipo de caracterstica propia que la distingue.

Es la propagacin de atributos y mtodos de una superclase a una o ms subclases. Esto


significa que a una subclase, adems de los atributos y mtodos propios, se le han
incorporado (heredado) los atributos y mtodos de otra clase (superclase). De esta forma
se crea una jerarqua de clases. Uno de los grandes beneficios al heredar atributos y
comportamientos hacia subclases es la reutilizacin de cdigo.
Cada clase tiene una superclase (la clase superior en la jerarqua), y cada clase puede tener
una o ms subclases (las clases inferiores en la jerarqua). Las clases que estn en la parte
inferior en la jerarqua se dice que heredan de las clases que estn en la parte superior en la
jerarqua.
Permite que una clase tenga un comportamiento inicial igual a otra y luego lo aumente o
modifique.
La clase que hereda se conoce como subclase
La clase de la cual se hereda se le llama super clase
Una subclase hereda variables y mtodos de su superclase y de todos sus antecesores.
La subclase puede usar esos miembros tal y como estn o puede esconder variables o sobre
escribir mtodos.
Los constructores no son miembros y no son heredados por sus subclases.
Para controlar el acceso desde otras clases, y para controlar la herencia por las subclase, los
miembros (atributos y mtodos) de las clases tienen tres modificadores posibles de control de
acceso:

public: Los miembros declarados public son accesibles en cualquier lugar en


que sea accesible la clase, y son heredados por las subclases.
private: Los miembros declarados private son accesibles slo en la propia
clase.
protected: Los miembros declarados protected son accesibles slo para sus
subclases
Simple
Una clase hereda las caractersticas y operaciones de otra clase.

Mltiple
Es cuando una clase hereda de dos o ms clases, Java no utiliza este tipo de herencia sin embargo, puede
implementarse haciendo uso de interfaces.

Sintaxis de la subclase
public class nombre_clase extends nombre_superclase
{
//variables y mtodos
}
Crear una clase que maneje Figuras (rectngulo y triangulo)

Abstraccin
Las figuras tienen medidas:
Largo
Altura

Atributos: Mtodos:
Largo Obtener el rea de cada figura.
Altura
Utilizando los valores protected

class figuras{
protected int largo;
protected int altura;

void set_valores(int l, int a){


largo=l;
altura=a;
}
}
class Rectangulo extends figuras class Triangulo extends figuras
{ {
int area() int area()
{ {
return (largo*altura); return (largo*altura)/2;
} }
} }
class mainFiguras{
public static void main(String a[]){

rectangulo objRectangulo=new rectangulo();


Triangulo objTriangulo=new triangulo();
objRectangulo.set_valores(3,1);
objTriangulo.set_valores(8,4);
System.out.println("\nEl area del Rectangulo es: " + objRectangulo.area());
System.out.println("\nEl area del Triangulo es: " + objTrianguloarea());
}
}
1. Agregar las clases necesarias para calcular: El permetro de cada figura y para
calcular rea y permetro de un circulo.
Crear una clase que maneje Figuras (rectngulo, triangulo y crculo)
Abstraccin:
Las figuras tienen medidas:
Largo
Altura
radio

Atributos: Mtodos:
Largo
Obtener el rea de cada figura.
Altura
Obtener el rea de cada figura.
radio
El polimorfismo es una habilidad de tener varias formas. Se habla de polimorfismo cuando un
operador o mtodo puede cumplir con varias funciones a pesar de que sean llamados de la
misma manera.

El concepto de polimorfismo, en cuanto a cambio de forma, se puede extender a los mtodos.


Java permite que varios mtodos dentro de una clase se llamen igual, siempre y cuando su lista
de parmetros sea distinta(sobrecarga de mtodos).
class Polimorfo{

String nombre;
int edad;
String nacionalidad;

//Constructor
Polimorfo(){
nombre="Carlitos";
edad=15;
nacionalidad="mexicana ";
}
//Constructor sobrecargado

Polimorfo(String nom_a,int edad_a,String nac_a){


nombre=nom_a;
edad=edad_a;
nacionalidad=nac_a;
}
void printDatos(){
System.out.println("\n La persona es :" + nombre);
System.out.println("La edad :" + edad);
System.out.println("Tiene la nacionalidad :" + nacionalidad);
if (edad<=3)
System.out.println("Es an un beb" );
else if(edad >3 && edad <=12)
System.out.println("Es un latoso nio" );
else if(edad >12 && edad <=18)
System.out.println("Es un inquieto jven" );
else if(edad >18 )
System.out.println("Ya es un adulto" );
}
}
class mainPolimorfo{
public static void main(String args[]){
Polimorfo objPoli=new Polimorfo();
Polimorfo objPoli2=new Polimorfo("Mario",12,"Cubano");
objPoli.printDatos();
objPoli2.printDatos();
}
}
class Areas{
int ladoA;
int ladoB;
int area;
void area(int ladoC){
area=ladoC*ladoC;
System.out.println("\n Su figura es un cuadrado y el area es: "+ area);
}
void area(int largo, int ancho){
area=largo*ancho;
System.out.println("\n Su figura es un rectangulo y el area es: "+ area);
}
}
class mainAreas{
public static void main(String args[]){
Areas objFigura1=new Areas();
Areas objFigura2=new Areas();
objFigura1.area(5);
objFigura2.area(4,6);
}
}

Vous aimerez peut-être aussi