You are on page 1of 53

PROGRAMACIN ORIENTADA A

OBJETOS
Irma Gallegos Fuenzalida irma.gallegos.dportales@gmail.com

CONTENIDOS

Unidad I: Fundamentos de orientacin a objetos y UML Unidad II: Fundamentos de la programacin en JAVA Unidad III: Aspectos avanzados del lenguaje de programacin JAVA

REFORZAMIENTO

Pseudocdigo: Lenguaje intermedio entre nuestro lenguaje y el lenguaje de programacin. Representa la solucin a un algoritmo de la forma ms detallada posible, y a su vez lo ms parecida posible al lenguaje que posteriormente se utilizar para la codificacin del mismo.

REFORZAMIENTO

Partes de un pseudocdigo
Inicio. Declaracin de variables o constantes Instrucciones. Fin.

REFORZAMIENTO

Declaracin de variables
Tipo_variable variable1, variable2; Ej: entero num1;

Declaracin de constantes
Tipo_constante constante1=valor,constante2=valor; Ej: entero num1=5;

REFORZAMIENTO

Instrucciones

Leer desde teclado


leer(variable); Ej: leer(num1);

Imprimir en pantalla
imprimir(Lo que se desea informar); Ej: imprimir(Ingrese el primer nmero);

REFORZAMIENTO

Instrucciones

Asignacin de variables

Variable1=variable2; Variable1=variable2+variable3; Ej: num1=3+5;

REFORZAMIENTO

Instrucciones

Instrucciones selectivas:
Si (condicin )entonces instrucciones; fin_si Ej: Si (num1>num2)entonces resultado=num1-num2; Fin_si

REFORZAMIENTO

Ejercicio1:

Sumar dos nmeros enteros ledos desde teclados, slo si ambos son mayores a 5, e desplegarlo en pantalla.

REFORZAMIENTO
Inicio entero num1, num2, resultado=0; imprimir (Ingrese el primer nmero); leer num1; imprimir (Ingrese el segundo nmero); leer num2; si(num1>5)entonces si(num2>5)entonces resultado=num1+num2; fin_si fin_si imprimir (El resultado es +resultado); Fin

REFORZAMIENTO

Instrucciones selectivas dobles:


si(condicion)entonces
instrucciones; sino instrucciones;

fin_si
Ej: si(num1>num2)entonces imprimir(El primer nmero es mayor);

sino
imprimir(El segundo nmero es mayor); fin_si

REFORZAMIENTO

Ejercicio2:

Realizar un pseudocdigo que permita saber si un nmero es mayor a cero.

REFORZAMIENTO
Inicio entero num1; imprimir(Ingrese un nmero); leer(num1); si(num1>0)entonces imprimir(El nmero ingresado en mayor a 0); sino imprimir(El nmero ingresado en menor a 0); fin_si Fin

REFORZAMIENTO

Selectiva mltiple-Casos
Segn (valor) hacer caso valor1: instrucciones; quiebre; caso valor2: instrucciones; quiebre; de_otro_modo: instrucciones; quiebre; Fin_segun;

REFORZAMIENTO
Segn(valor)hacer caso 1: imprimir(Es el primer caso); quiebre; caso 2: imprimir(Es el segundo caso); quiebre; de_otro_modo: imprimir(No es ningn caso);

quiebre;
Fin_segun

REFORZAMIENTO

Ejercicio 3:

De acuerdo a la opcin que ingrese el usuario indicar:


Si la opcion es 1, imprimir Hola alumnos Si la opcion es 2, imprimir Hola profesora Si la opcion es 3, imprimir Hola mundo Si no es alguna de las anteriores, imprimir No saludo

REFORZAMIENTO
Inicio entero num1; segn(num1)hacer caso 1: imprimir(Hola alumnos); quiebre; caso 2: imprimir(Hola profesora); quiebre caso3: imprimir(Hola mundo); quiebre; de_otro_modo: imprimir(No saludo); quiebre; fin_segun; Fin

REFORZAMIENTO

Estructuras iterativas

Bucle mientras
Mientras(condicion)hacer instrucciones; Fin_mientras Ej: entero num1=0; mientras(num1<5)hacer num1=num1+1; imprimir(hola); fin_mientras

REFORZAMIENTO

Bucle hacer
hacer instrucciones; mientras(condicion);
Ej: entero num1=0; hacer num1=num1+1; imprimir(hola); mientras(num1<5);

REFORZAMIENTO

Bucle para:
Para (i=0;i<5;i++)hacer instrucciones; Fin_para Para (i=5;i>0;i--)hacer instrucciones; Fin_para
Ej: Para (i=5;i>0;i--)hacer imprimir(hola); Fin_para

REFORZAMIENTO

Cmo

es

en java?

REFORZAMIENTO

Declaracin de variables y constantes


int variable, num=0;

Imprimir en pantalla
System.out.println(Hola mundo);

Leer desde teclado


InputStreamReader isr = new InputStreamReader(System.in); BufferedReader br = new BufferedReader (isr); String cadena = br.readLine();

REFORZAMIENTO

Instrucciones selectivas y selectivas dobles


if(num1>num2){ instrucciones; }
if(num1>num2){ instrucciones; }else{ instrucciones; }

REFORZAMIENTO

Selectiva mltiple-casos
switch(opcion){ case 1: instrucciones; break; case 2: instrucciones; break; default: instrucciones; break; }

REFORZAMIENTO

Bucle mientras
While(num1>1){ instrucciones; }

Bucle hacer
do{ instrucciones; }while(num1>1);

Bucle para
for(int i=0;i<5;i++){ instrucciones; }

REFORZAMIENTO

Ejercicios finales

Validar un rut Dividir sin dividir en java Multiplicar sin multiplicar en java

UNIDAD I: FUNDAMENTOS DE ORIENTACIN


ORIENTADA A OBJETOS Y UML

Historia e introduccin del paradigma orientado a objetos


Es un paradigma de programacin que usa los objetos en sus interacciones, para disear aplicaciones y programas del rea informtica Se basa en tcnicas como la herencia, cohesin, abstraccin, polimorfismo, acoplamiento y encapsulamiento. Se populariz en los aos 90

UNIDAD I: FUNDAMENTOS DE ORIENTACIN


ORIENTADA A OBJETOS Y UML

Objetos: Son entidades que tienen un estado(datos, informacin, atributos ), comportamiento (mtodos o mensajes)e identidad(lo que lo diferencia de otros objetos)
Clase: definiciones de las propiedades y comportamiento de un tipo de objeto concreto. La instanciacin es la lectura de estas definiciones y la creacin de un objeto a partir de ellas. Herencia: Permite la creacin de nuevas clases basadas en clases existentes. Cuando se hereda de una clase existente, se resan mtodos y atributos, y se pueden agregar nuevos atributos y mtodos para cumplir con la situacin nueva. La clase ya existente es llamada superclass, o clase padre. La clase nueva es llamada subclase, o clase hija.

A travs de la herencia se pueden agregar nuevos campos, adems de agregar o sobre montar mtodos. Sobre montar un mtodo es redefinirlo en la case heredada.

Objeto: Instancia de una clase. Entidad provista de un conjunto de atributos (datos) y de comportamiento o funcionalidad (mtodos), los mismos que consecuentemente reaccionan a eventos. Se corresponden con los objetos reales del mundo que nos rodea, o con objetos internos del sistema (del programa). Es una instancia a una clase. Mtodo: Algoritmo asociado a un objeto (o a una clase de objetos), cuya ejecucin se desencadena tras la recepcin de un "mensaje". Desde el punto de vista del comportamiento, es lo que el objeto puede hacer. Un mtodo puede producir un cambio en las propiedades del objeto, o la generacin de un "evento" con un nuevo mensaje para otro objeto del sistema.
Evento: es un suceso en el sistema (tal como una interaccin del usuario con la mquina, o un mensaje enviado por un objeto). El sistema maneja el evento enviando el mensaje adecuado al objeto pertinente. Tambin se puede definir como evento la reaccin que puede desencadenar un objeto; es decir, la accin que genera.

Atributos: caractersticas que tiene la clase


Componentes de un objeto: atributos, identidad, relaciones y mtodos.

CARACTERSTICAS DE LA PROGRAMACIN
ORIENTADA A OBJETOS Abstraccin: Sirve para expresar las caractersticas esenciales de un objeto, los cuales distinguen al objeto de los dems. Polimorfismo: Capacidad de los objetos de una clase de responder al mismo evento en funcin de los parmetros utilizados durante su invocacin. Encapsulamiento: Guarda en una cpsula los datos que definen una clase.

CARACTERSTICAS DE LA PROGRAMACIN
ORIENTADA A OBJETOS

Acoplamiento: Un acoplamiento fuerte significa necesitan saber detalles internos entre ellas. Se debe tener un acoplamiento bajo en las clases. Por ejemplo los atributos privados, un bajo acoplamiento permite:
Entender una clase sin leer otras Cambiar una clase sin afectar a otras Mejora la mantenibilidad del cdigo

Cohesin: Si una clase tiene bien definida una funcin dentro del sistema. En cuanto mas enfocado este el propsito de la clase mas alta es la cohesin. Una alta cohesin hace ms fcil:
Entender qu hace una clase o mtodo Usar nombres descriptivos Reutilizar clases o mtodos

CARACTERSTICAS DE LA PROGRAMACIN
ORIENTADA A OBJETOS Asociacin: Agregacin: Composicin : Generalizacin (herencia):

UN POCO DE HISTORIA

El lenguaje UML comenz a gestarse en octubre de 1994, la idea era unificar dos mtodos que haban desarrollado: el mtodo Booch y el OMT (Object Modelling Tool ). El primer borrador apareci en octubre de 1995. Es un lenguaje de modelado que se usa para especificar, visualizar, construir y documentar partes de un sistema de software. Se usa para entender, disear, configurar, mantener y controlar la informacin sobre los sistemas a construir.

UML no es un lenguaje de programacin. Las herramientas pueden ofrecer generadores de cdigo de UML para una gran variedad de lenguaje de programacin, as como construir modelos por ingeniera inversa a partir de programas existentes.
La notacin UML se deriva y unifica las tres metodologas de anlisis y diseos ms extendidas. Metodologa de Grady Booch para la descripcin de conjuntos de objetos y sus relaciones. Tcnica de modelado orientada a objetos de James Rumbaugh . Aproximacin de Ivar Jacobson mediante la metodologa de casos de uso .

UML:

Posee la riqueza suficiente como para crear un modelo del sistema, pudiendo modelar los procesos de negocios, funciones, esquemas de bases de datos, expresiones de lenguajes de programacin, etc. Para ello utiliza varios tipos diferentes de diagramas, por ejemplo, en UML 2.0 hay 13 tipos de diagramas. Estos diagramas se pueden diferenciar en tres categoras:
- Diagramas de estructura: Diagrama de clases Diagrama de componentes Diagrama de objetos Diagrama de estructura compuesta Diagrama de despliegue Diagrama de paquetes -Diagramas de comportamiento: Diagrama de actividades Diagrama de casos de uso Diagrama de estados -Diagramas de interaccin: Diagrama de secuencia Diagrama de comunicacin Diagrama de tiempos Diagrama de vista de interaccin

CASOS DE USO

Describen las relaciones y las dependencias entre un grupo de casos de uso y los actores participantes en el proceso. No estn pensados para representar el diseo y no describe los elementos internos de un sistema. Los diagramas de casos de uso sirven para facilitar la comunicacin con los futuros usuarios del sistema, y con el cliente, y resultan especialmente tiles para determinar las caractersticas necesarias que tendr el sistema. En otras palabras, los diagramas de casos de uso describen qu es lo que debe hacer el sistema, pero no cmo. Los casos de uso deben estar relacionados por lo menos con un actor. Deben ser descritos en un lenguaje formal y en tercera persona.

CASOS DE USO

CASOS DE USO

Los casos de uso pueden tener relaciones con otros casos de uso. Los dos tipos de relaciones ms comunes entre casos de uso son:
<<include>> que especifica una situacin en la que un caso de uso tiene lugar dentro de otro caso de uso. <<extends>> que especifica que en ciertas situaciones, o en algn punto (llamado punto de extensin) un caso de uso ser extendido por otro.

CASOS DE USO

Actor: Un actor es una entidad externa que interacciona con el sistema participando en un caso de uso. Los actores pueden ser gente real (por ejemplo, usuarios del sistema), otros ordenadores o eventos externos. El actor representa un rol Descripcin de casos de uso: Las descripciones de casos de uso son reseas textuales del caso de uso.

EJEMPLO DE CASOS DE USO

Caso de uso Participantes

Agregar viaje Administrador

Descripcin
Pre-condicin Pos-condicin

En este caso el sistema da la opcin de agregar un nuevo viaje a los ya existentes.


El usuario tiene que estar autentificado, con la sesin activa y en la ventana principal. Actualiza la base de datos y muestra el mensaje Viaje agregado correctamente Respuestas del sistema

Accin del actor 1)- Presiona el botn agregar viaje.

2)- Despliega en pantalla el formulario para un nuevo registro de viaje y espera confirmacin del usuario para el almacenamiento de los datos.
3)- Selecciona el camin y la ruta, que requiere este viaje. Digita el resto de los datos del nuevo viaje (tipo carga, fecha de inicio).

4.a)- Valida los datos, guarda los cambios y muestra en pantalla el mensaje Viaje agregado correctamente, hasta que el usuario hace clic en aceptar, volviendo a la pgina principal.

CURSOS ALTERNOS DEL SISTEMA

4.b)- No se guard el nuevo viaje, por un error en la conexin a la red, muestra en pantalla Error de conexin, verifique su cable de red o informe al administrador, hasta que el usuario da clic en aceptar, volviendo al paso 2 del curso normal de eventos.

DIAGRAMA DE CLASES

Los diagramas de clases muestran las diferentes clases que componen un sistema y cmo se relacionan unas con otras. Se dice que los diagramas de clases son diagramas estticos porque muestran las clases, junto con sus mtodos y atributos, as como las relaciones estticas entre ellas: qu clases conocen a qu otras clases o qu clases son parte de otras clases, pero no muestran los mtodos mediante los que se invocan entre ellas.

EJEMPLO
Persona -nombre: String -rut: String -edad:int +cumpleanios():void +cambiaNombre(nvoNombre:String):void

Simbologa: Composicin Agregacin Asociacin


Herencia

DIAGRAMA DE CLASES
- privado + publico # protegido Enumeracin o cardinalidad Mnimo.. Mximo 1..* 0..* 1..1 1..5

EJERCICIO

Una empresa dedicada a el lavado de autos necesita realizar un sistema que registre cada lavado(Fecha, descripcin, valor), los clientes(nombre, direccin, telfono), y los trabajadores encargados. Realice el diagrama de casos de uso y el diagrama de clases de este proyecto.

DIAGRAMA DE CASOS DE USO

CASOS DE USO EXTENDIDO DE AGREGAR


LAVADO
Caso de uso Participantes Descripcin Pre-condicin Pos-condicin Agregar lavado Administrador, trabajador En este caso el sistema da la opcin de agregar un lavado al sistema. El usuario tiene que estar autentificado, con la sesin activa y en la pgina principal Actualiza la base de datos y muestra el mensaje Lavado agregado correctamente con xito. Respuestas del sistema

Accin del actor 1)- Presiona el botn agregar lavado.

2- Despliega en pantalla el formulario, esperando que el usuario confirme su envo. 3)- Digita los datos que necesita, presiona el botn guardar 4.a)- Valida los datos, los guarda y muestra en pantalla el mensaje Lavado guardado con xito, hasta que el usuario hace clic en aceptar, volviendo a la pgina principal.

CURSOS ALTERNOS DEL SISTEMA


Cursos alternos del sistema. 4.b)- No se guard el nuevo lavado, por un error en la conexin a la red, muestra en pantalla Error de conexin, verifique su cable de red o informe al administrador, hasta que el usuario da clic en aceptar, volviendo al paso 2 del curso normal de eventos.

DIAGRAMA DE CLASES

En clases.

DE CDIGO A DIAGRAMA DE CLASES


public class Perro{ private String nombre; private int edad; private String raza; private String observacion; public Perro (String n, int e, String r, String o){ this.nombre=n; this.edad=e; this.raza=r; this.observacion=o; } public void aumentaEdad(){ edad=edad+1; } public String dameNombre(){ return nombre; } public String editarObservacion(String observacion){ this.observacion=observacion; } }

public class Persona{ private String nombre; private Date fechaNacimiento; private String rut; public Persona(String n, Date fechaN, String r){ this.nombre=n;

this.edad=fechaN;
this.rut=r; } protected String dameNombre(){

return nombre;
} }

public class Cliente extends Persona{ private Perro perro; private int telefono; private String direccion; public Cliente(String n, Date fechaN, String r, int telefono, String direccion){ super(n,fechaN, r); this.telefono=telefono; this.direccion =direccion; this.perro=null; } public void cambiaDireccion(String nvaDireccion){ this.direccion=nvaDireccion; }

public void cambiaTelefono(int nvoTelefono){


this.telefono=nvoTelefono; } public boolean agregaPerro(Perro p){ if(this.perro!=null){ this.perro=p; return true; }else{ return false; } } }

public class Perrera{ private Vector misClientes; private int telefono; private String direccion; public Perrera(int telefono, String direccion){ this.telefono=telefono; this.direccion =direccion; this.misClientes=new Vector(); } public void cambiaDireccion(String nvaDireccion){ this.direccion=nvaDireccion; } public void cambiaTelefono(int nvoTelefono){ this.telefono=nvoTelefono; } public boolean agregaCliente(Cliente c){ if(this.cliente!=null){ this.misClientes.addElement(c); return true; }else{ return false; } } }

You might also like