Vous êtes sur la page 1sur 10

Programacin orientada a objetos:

Primera Unidad
Introduccin al paradigma orientado a objetos.
Temario oficial del curso
Evaluacin del curso:
1 Examen por cada 2 Unidades. 40% de cada unidad
2 Tareas.
30% del curso
3 Ejercicios varios.
20% del curso
4 Exposicin por todo el curso.
10% del curso
5 Asiduidad (no tener faltas).
5% del curso
6 Portafolios de eficiencias.
5% del curso.
_______
Total:
110%
Lo cual quiere decir que desde el 2 tem de evaluacin hasta el 6 son
actividades optativas.
Favor de traer:
1.- Portafolios de evidencias que incluye:

temario oficial del curso en pdf.

Apuntes del curso con fechas por cada sesin acadmica en manuscrito
original del alumno.

Examenes originales revisados por el maestro.

Tareas impresas reportadas y revisadas por el maestro.

Ejercicios varios en formato electrnico o papel.

Reporte de exposicin cumplida y revisada por el maestro.


2.- Cuaderno entre 70 y 80 hojas para apuntes
3.- cada tarea deber incluir el protocolo siguiente:

/*Nombredelarchivo.java
InstitutoTecnolgicodeLen
IngenieraenSistemasComputacionales
ProgramacinOrientadaaObjetos
Nombredelalumno(a):______________
Fotodigitaldelalumno(a):
Tarea#:______________
Fechadeentrega:____________
Fechadeentregareal:________
*/
Nota: No se aceptarn tareas sin protocolo
premisas para el curso:
a) TodoAlumnoinscritoenelITLesunadultoresponsabledesudesempeoacadmico
b)Estecursoseapoyaenlosconocimientosdefundamentosdeprogramacin.
c)Seprivilegiaelrazonamientoeneldiseodeprogramas.
Temas de exposicin

Que es UML?

Clase Graphics

Diagramas de herencia en UML

Clase Date, Calendar y GregorianCalendar

La clase JoptionPane

Nota: Si es necesario dar un repaso de arreglos ver: /home/cir/1.3 Arreglos


Qu es el paradigma de programacin orientado a objetos?
Es un modelo de desarrollo de software que propone postulados de abstraccin,
modularidad, encapsulamiento, herencia y polimorfismo. Como necesarios para el diseo e
implementacin de programas.
Qu es la programacin orientada a objetos?
Es una metodologa para escribir programas de computadora donde cada aplicacin se
contempla como un conjunto de objetos limitados que se comunican entre ellos enviandose
mensajes para realizar una tarea especifica siguiendo los postulados del paradigma exprofeso.

1.1 Elementos del modelo de objetos: <<Repaso de fundamentos

clases,

Definicin: Una clase es un conjunto de objetos con caractersticas similares que se


identifica por un nombre, una serie de atributos y una serie de funciones o mtodos aplicables
a todo el conjunto.
El nombre de la clase es un sustantivo que en singular identifica al conjunto de objetos.
Los atributos son las caractersticas relevantes al objeto dentro del contexto (dominio)
de aplicacin definidos por medio de variables miembro al modelar la clase. A las variables
miembro que modelan los atributos de la clase tambin se les llama variables de instancia.
Los mtodos son operaciones o funciones de programa que caracterizan lo que se
puede hacer con el conjunto de objetos atenindose a algoritmos expresamente diseados
segn el dominio de la aplicacin. Los nombres de los mtodos suelen ser verbos que definen
comportamientos aplicables al conjunto de objetos.
En poo se define una clase como una plantilla para caracterizar o construir objetos.
En resumen una clase tiene nombre, atributos y mtodos.
Cualquier sustantivo es candidato para encapsular una clase. Por ejemplo, camisa, reloj,
moneda, cinturon, zapato, vestido, peineta, arete, etc.

Ejemplo 1. una clase encapsulada:


Artculo
-cantidad : double;
-unidad : String;
-descripcin: String;
-precio : double;
+setCantidad(c:double) :void;
+setUnidad(u:String)
:boolean;
+setDescripcion(n:String):boolean;
+setPrecio(p:double) :boolean;
+getCantidad()
:double;
+getUnidad()
:String;
+getDescripcion()
:String;
+getPrecio()
:double;

Ejercicio # 1 codificar la clase encapsulada. 15 min.


publicclassArticulo{
privateStringdescripcin;
privateStringunidad;

privatedoubleprecio;
privatedoublecantidad;
publicbooleansetUnidad(Stringu){
if(u.equals())returnfalse;
elseunidad=u;
returntrue;
}
publicbooleansetDescripcin(Stringdescripcin){
if(descripcin.equals(""))
returnfalse;
else
this.descripcin=descripcin;
returntrue;
}

publicStringgetDescripcin(){returndescripcin;}
publicdoublegetCantidad(){returncantidad;}
publicvoidsetCantidad(doublecantidad){this.cantidad=cantidad;}
publicdoublegetPrecio(){returnprecio;}
publicStringgetUnidad(){returnunidad;}
publicbooleansetPrecio(doubleprecio){
if(precio<0)returnfalse;
elsethis.precio=precio;
returntrue;
}
}
objetos,
http://java.sun.com/docs/books/tutorial/java/concepts/
Definicin: Un objeto es un ente o una entidad, real o imaginario que tiene una
identidad, un estado y un comportamiento conforme al conjunto (clase) al que pertenece.
La identidad del objeto es el nombre de la variable de referencia (token) con que se
identifica.
Una referencia es un apuntador a un objeto.
Un apuntador es una localidad de RAM (celda de memoria principal) donde reside el
valor de una variable o la localidad inicial de un objeto.
Un token (del ingles: ficha) es un conjunto de caracteres unicode (cadena de
caracteres) que permite nombrar a una variable, a un signo de puntuacin o a un conjunto de
palabras reservadas del lenguaje de programacin.
Unicode (Universal Code) es un cdigo de transferencia de informacin en
computadoras. Es un superconjunto del ASCII (American Standar Code for Interchange of
Information).
El estado del objeto es el conjunto de valores almacenados en las variables miembro
(atributos) de la clase a que pertenece el objeto.
El comportamiento del objeto es el conjunto de operaciones aplicables a l por medio
de los mensajes que invocan a alguno de los mtodos definidos en la clase a la que pertenece
de acuerdo al dominio de la aplicacin.
El dominio de la aplicacin es un marco de referencia que permite distinguir la
pertinencia de incluir o no los atributos y los mtodos relevantes a las clases debido a que
existe una interaccin entre ellos.
En poo se define a un objeto como una instancia de una clase.

Ejemplo 2: un objeto: La mesa del comedor de mi casa es de madera, es redonda, tiene


un pedestal y necesita barniz.
En resumen un objeto tiene identidad, estado y comportamiento.
Como ejercicio 2: Favor de describir un objeto que ustedes conozcan muy de cerca
incluyendo su identidad, su estado y su comportamiento.

Abstraccin.- Definicin: La abstraccin/modularizacin es la accin de separar


mentalmente la representacin de las caractersticas esenciales de algo, sin incluir
antecedentes o detalles irrelevantes. La abstraccin se relaciona estrechamente con la
modularizacin.

La abstraccin es un proceso mental natural en los seres humanos, es una facultad


intuitiva que permite conocer la esencia de las cosas.

Modularidad.- La modularizacin es un proceso mental que permite distinguir los


componentes de los objetos que estn siendo estudiados.
Los programadores aunque no lo sepan!, utilizan 3 tipos de abstraccin:

Abstraccin de datos ( modela clases encapsuladas)


Abstraccin funcional ( modela algoritmos)
Abstraccin contextual (distingue el alcance de la aplicacin o programa segn su
dominio, tomando en cuenta restricciones y riesgos para modelar aplicaciones
amalgamando las dos anteriores)

Clase: es una coleccin de objetos que comparten atributos y mtodos comunes.


Define las estructuras de datos del objeto.
En poo los atributos y mtodos de un tipo de objeto se conocen como sus
caractersticas y responsabilidades.
Una clase tambin se denomina tipo de datos; es un tipo de datos abstracto que
encierra el concepto que se pretende modelar.
Objeto: Ente o entidad definido por una lista de atributos abstractos como tamao,
posicin y color; cualquier cosa con una identidad, puede ser un individuo real o imaginario o
un concepto abstracto o concreto.
Ojo: aqu meter el ejemplo 3: de como conocemos las cosas (borrador).
Una clase es general, un objeto es particular.

Encapsulamiento: Es un postulado de la poo que permite destacar las caracteristicas


relevantes de las clases, ocultar las irrelevantes y modelar las operaciones aplicables al
conjunto de objetos.

El Encapsulamiento es el resultado o el modelo; en las clases se declaran los tipos de


datos resultantes de la abstraccin y el medio de manipularlos u operar con ellos.
Tambien decimos que el Encapsulamiento provoca el ocultamiento de informacin. Esto
se refiere a la prctica de incluir dentro de una clase todo lo que necesita y hacerlo de tal
manera, que ningn otro objeto necesite conocer nunca su estructura de datos interna.
Las partes encapsuladas u ocultas de un objeto son su implementacin privada, se dice
que los atributos y los mtodos visibles son pblicos.
El ejemplo ya visto para el diagrama UML de la clase rticulo ilustra el encapsulamiento.
Una clase de prueba en java. (Abstraccin funcional)
Ejemplo 4: Algoritmo:

1.- Meta: Quiero un algoritmo que me permita escribir un programa capaz de capturar una
lista del mandado y subtotalizar el valor de los artculos as como el iva de la compra, al
final emita el total con iva usando arreglos de apuntadores.
2.- Datos.- usando un arreglo de 50 apuntadores a rticulos. Terminar la captura usando
un dato centinela = Fin.
cuenta = 0 // para subindice del arreglo
Escribir (Lista del mandado:)
Escribir(diga el nombre del articulo o \fin\:); nombre = ?
mientras (nombre != fin y cuenta < 50) empezar
Escribir(deme el precio unitario:); precio = ?
Escribir(cuantos de estos desea?:); cantidad = ?
Escribir(de la unidad:); unidad = ?
A[cuenta].setDescripcion(nombre);
A[cuenta].setPrecio(precio);
A[cuenta].setCantidad(cantidad);
A[cuenta].setUnidad(unidad);
cuenta = cuenta + 1;
Escribir(nombre del articulo o \fin\:); nombre = ?
terminar
3.- calculos : usar un arreglo de monto[50] para almacenar costos
subtotal = 0;
Establecer un lazo contado:
desde i = 0 hasta i = cuenta para empezar
monto[i] = A[i].getCantidad()*A[i].getPrecio();
subtotal = subtotal + monto[i];
terminar
iva = subtotal *.16;
total = subtotal + iva;
4.- Resultados : Escribir(Lista del mandado: )
Escribir(cantidad unidad descripcin precio unitario monto)
Escribir(______________________________________________________)
Establecer un lazo contado:
desde i = 0 hasta i = cuenta para empezar
Escribir(A[i].getCantidad()+ );
Escribir(A[i].getUnidad()+ );
Escribir(A[i].getDescripcion()+ );
Escribir(A[i].getPrecio()+ );
Escribir(monto[i]+\n);
terminar
5.- Navegabilidad: Escribir(Desea capturar y desplegar una nueva lista del mandado? S/n:);
Respuesta = ?
Mientras (respuesta == S)
Regresar al paso 2
de otro modo terminar.

/**Mandados.java
1aversiondelprogramaenRAM;
InstitutoTecnologicodeLen
IngenieraenSistemasComputacionales
ProgramacinorientadaaObjetos
MartesyJueves8:4510:25
Viernes9:3510:25
Alumno:
tarea#:_____________________
fechadeentrega:_____________

fechareal:__________________
*@authorcir
*/
importcstio.*;
importjavax.swing.*;
importjava.awt.Color;
importjava.awt.print.*;
publicclassMandados{
/**
*@paramargsthecommandlinearguments
*/
Pizarrapi=newPizarra();
Dialogdi=newDialog();
ArticuloA[]=newArticulo[50];
double[]monto=newdouble[50];
doublesubtotal,iva,total;
intcuenta;
publicvoidinicio(){
//coloqueaquilametadelproblema
pi.out("Paradesplegarlalistadelmandado");
pi.setVisible(true);
}

publicbooleanisNum(Stringcad){
try{
Double.parseDouble(cad);
returntrue;
}catch(NumberFormatExceptione){
di.display("Nosehagaelgraciosoytecleecorrectamente.");
returnfalse;
}
}
publicvoiddatos(){
//coloqueaquilosdatosacapturar
Stringname;
Stringaux;

cuenta=0;
doname=di.readString("Demeelartculo:"+cuenta+"o\"fin\":");
while(name.equals(""));
while(!name.toUpperCase().equals("FIN")&&cuenta<A.length){
A[cuenta]=newArticulo();
A[cuenta].setDescripcin(name);
dodoaux=di.readString("Depreciounitario:");
while(!isNum(aux));
while(!A[cuenta].setPrecio(Double.parseDouble(aux)));
doaux=di.readString("Cuantosdesea:");
while(!isNum(aux));
A[cuenta++].setCantidad(Double.parseDouble(aux));
doname=di.readString("Demeelartculo:"+cuenta+"o\"fin\":");
while(name.equals(""));
}
}

publicvoidcalculos(){
//coloquelasformulasautilizar
subtotal=0;
for(inti=0;i<cuenta;i++){
monto[i]=A[i].getCantidad()*A[i].getPrecio();
subtotal+=monto[i];

}
iva=subtotal*.16;
total=subtotal+iva;
}

publicvoidimprimePane(){
StringtoPrint="ListadelMandado\n";
JTextPanejtp=newJTextPane();
jtp.setBackground(Color.white);

toPrint+="____________________________________________\n";
toPrint+="cantidaddescripcionunitariocuenta\n";
for(inti=0;i<cuenta;i++){
toPrint+=String.format("%8s",A[i].getCantidad());
toPrint+=String.format("%15s",A[i].getDescripcin());
toPrint+=String.format("%8s",A[i].getPrecio());
toPrint+=String.format("%8s\n",monto[i]);
}
iva=subtotal*.16;
toPrint+="____________________________________________\n";
toPrint+="Subtotal:\t\t\t"+subtotal;
toPrint+="\niva:\t\t\t"+iva;
toPrint+="\nTotalconiva:\t"+(subtotal+iva);
jtp.setText(toPrint);
try{jtp.print(null,null,true,null,null,true);}
catch(PrinterExceptionex){ex.printStackTrace();}
}

publicvoidresultados(){
Stringimpreso;

//coloquelosresultadosareportar
pi.out("ListadelMandado\n");
pi.out("_________________\n");
pi.out("cantidaddescripcionunitariocuenta\n");
for(inti=0;i<cuenta;i++){
pi.out(A[i].getCantidad()+"");
pi.out(A[i].getDescripcin()+"\t");
pi.out(A[i].getPrecio()+"\t");
pi.out(monto[i]+"\n");
subtotal+=monto[i];
}
iva=subtotal*.16;
pi.out("___________________");
pi.out("\nSubtotal:\t\t"+subtotal);
pi.out("\niva:\t\t"+iva);
pi.out("\nTotalconiva:"+(subtotal+iva));
impreso=di.readString("Deseaimprimirelticket?s/n:");
if(impreso.toUpperCase().equals("S"))
imprimePane();
}
publicstaticvoidmain(String[]args){
//TODOcodeapplicationlogichere
Mandadoson=newMandados();
Stringresp="S";
on.inicio();
while(resp.toUpperCase().equals("S")){
on.datos();
on.calculos();
on.resultados();
resp=on.di.readString("Deseavolveraacorrer?s/n:");
}

}
}
Tarea1:proponerundiagramadeclaseencapsulada,Analizarobjetosconcretos
(puerta,elevador,televisor,etc.)yabstractos(cuentabancaria,prstamo,
viaje,etc.)delavidarealparaabstraerymodelarsusatributosy
comportamientos.Implementarclasesparainstanciarobjetosquemodelensus
contrapartesdelavidarealusandotiposdedatossimplesyobjetoscomo
parmetrosyvaloresderetorno,ascomomtodossinvaloresderetorno.

herencia
The concept of extending a class to obtain another class is called inheritance.

En poo la herencia es un postulado que permite definir una subclase en terminos de una clase base (superclase)
llamada ancestro quien delega sus miembros a todas sus clases descendientes o derivadas.
La herencia es un concepto que se parece ms a la gentica y menos a la material.
base hereda a sus clases derivadas atributos y mtodos comunes al conjunto de objetos genricos.

Una clase

polimorfismo.
Es la habilidad que tienen los objetos de mostrar mltiples formas y comportamientos
diferentes segn la subclase a la que pertenece el objeto. El polimorfismo es una consecuencia
de la herencia. (ver ejemplos despus de ver el siguiente tema UML.)

Supongamos que estamos haciendo un programa de clasificacin de animales. Si uno


quisiera crear estructuras o clases correspondientes a distintas especies animales (digamos
perro, gato, pez), as, creamos la clase mamfero, a la que le agregamos datos como el nmero
de patas del animal o el color del pelaje (pero a la clase oviparo no), y luego derivamos de esta
clase las clases gato y perro (ya que ambos son mamferos), a las que no hace falta explicitar
que poseen patas o que tienen pelajes, porque ya lo hemos hecho en la clase base, mamfero.

Mamifero
-numeroDePatas:int;
-colorDePelo:String;
-nombre:String;
+imprimirPatas():void;
+imprimirNombre():void;
+imprimirColor():void;
+Mamifero(nombre:String,
color:String;
npatas:int);
/*Mamifero.java
InstitutoTecnolgicodeLen
IngenieraenSistemasComputacionales
Fundamentosdeprogramacin
Nombredelalumno(a):
Fotodigitaldelalumno(a):
Tarea#:______________
Fechadeentrega:____________
Fechadeentregareal:
*/
importjava.io.*;
publicclassMamifero{
privateintpatas;
privateintcolorpelo;
privateStringnombre;

publicvoidimprimirpatas(){
System.out.println(nombre+"tiene"+patas+"pata\n");
}
publicvoidimprimircolorpelo(){
System.out.println(colorpelo+colorpelo);
}
publicmamifero1(Stringnombre,intpatas){
this.nombre=nombre;
this.patas=patas;
}
}
classPerroextendsMamifero{
privateintmordidos;
publicPerro(Stringnombre){
super(nombre,4);
mordidos=0;
}
publicvoidincrementarMordidos(intm){mordidos+=m;}
publicintgetMordidos(){returnmordidos;}
}
classGatoextendsMamifero{
privateintratones;
publicgato(Stringnombre){
super(nombre,4);
ratones=0;
}
publicvoidincrementarRatones(intr){ratones+=r;}
publicintgetRatones(){returnratones;}
}
classProgramaDeBobi{
publicstaticvoidmain(String[]args){
perroBobi=newPerro("Bobi");

bobi.imprimirpatas();
bobi.imprimircolorpelo();
/*estaenlaclasemamifero*/
if(bobiinstanceofPerro){
bobi.incrementarMordidos(2);
System.out.println(Mordidos=+bobi.getMordidos());
}
if(bobiinstanceofGato){
bobi.incrementarRatones(1);
System.out.println(Ratones=+bobi.getRatones());
}
}
}
Tarea # 2 favor de proponer un problema en torno a la clase encapsulada en la tarea 1 y
disear el o los algoritmos de solucin pertinentes as como la codificacin de la clase de
prueba para el algoritmo que manipula la clase encapsulada y que implementa la solucin del
problema con un enfoque de sistemas y el frame work propuesto en fundamentos de
programacin.

1.2 Lenguaje de modelado unificado: diagrama de clases.


Ejercicio 4: favor de leer la referencias:
http://edn.embarcadero.com/article/31863
http://www.smartdraw.com/resources/tutorials/uml-diagrams
http://www.visual-paradigm.com/product/vpuml/provides/structuralmodeling.jsp
Desde el punto de vista del diseo: Como definir una clase?
Que quiero disear en torno a los conjuntos de objetos?

Nombre de la clase:
Los atributos.
Las operaciones de la clase de objetos.
Los ejemplos estan en las clases:Artculo.java y Mamifero.java

Tarea 3. Favor de enviar por correo: cirsilva@yahoo.com su foto digital editandola con su
nombre sobre ella y no incrustndola en ningn otro documento, sin protocolo.
Aqui termina repaso de fundamentos>>

Vous aimerez peut-être aussi