Está en la página 1de 61

Orientacin a Objetos

Qu significa Orientacin a Objetos?


* El software se organiza como una coleccin de objetos que contienen tanto estructura como comportamiento.

Qu es el desarrollo OO?
* Una nueva forma de pensar acerca del software basndose en abstracciones que existen en el mundo real.

Monitor

marca
encender() apagar()

Marco Conceptual del Paradigma Orientado a Objeto.


P. O. O.

Mtodos de Anlisis y Diseo de Objetos


Modelo de Objetos.

Abstraccin. Herencia. Encapsulacin. Polimorfismo.


EL futuro del Paradigma OO

Bases de datos O. O.

Desarrollo basado en componentes (CORBA COM, EJB, COM) Tecnologa de objetos distribuidos (CORBA, RMI, Plataforma .NET)

Caractersticas de un LPOO

Todo es un objeto. Programa = cjto de objetos que se comunican mediante mensajes Todo objeto es instancia de una clase (tiene un tipo). La clase es el repositorio de comportamiento asociado con un objeto Las clases se organizan en jerarquas de herencia

Programacin Orientada a Objetos ?


Historia Se basa en la idea natural de la existencia de un mundo lleno de objetos y que la resolucin del problema se realiza en trminos de objetos

Promete mejoras de amplio alcance en la forma de diseo, desarrollo y mantenimiento del software

La falta de portabilidad del cdigo y reusabilidad Cdigo que es difcil de modificar

Un lenguaje se dice que est basado en objetos si soporta objetos como una caracterstica fundamental del mismo.

Ciclos de desarrollo largos


Tcnicas de codificacin no intuitivas.

P.O.O.: Tiene tres caractersticas bsicas: debe estar basado en objetos, basado en clases y capaz de tener herencia de clases.

Ob 1

Ob 2

Requisitos para L.O.O.: - Herencia

Ob 3 Ob 4

- Polimorfismo

- Encapsulacin

Definicin de Objeto: Es un conjunto complejo de datos y programas que poseen estructura y forman parte de una organizacin.

Estructura de un Objeto
Atributos Estado
Apariencia Variables Campos Objeto

Mtodos

Comportamiento
Funcin Procedimiento Accin Operacin

Un objeto consta de:


Tiempo de vida: La duracin de un objeto en un programa siempre est limitada en el tiempo. La mayora de los objetos slo existen durante una parte de la ejecucin del programa. Los objetos son creados mediante un mecanismo denominado instanciacin, y cuando dejan de existir se dice que son destruidos.

Estado: Todo objeto posee un estado, definido por sus atributos. Con l se definen las propiedades del objeto, y el estado en que se encuentra en un momento determinado de su existencia.
Comportamiento: Todo objeto ha de presentar una interfaz, definida por sus mtodos, para que el resto de objetos que componen los programas puedan interactuar con l. El equivalente de un objeto en el paradigma estructurado sera una variable. As mismo la instanciacin de objetos equivaldra a la declaracin de variables, y el tiempo de vida de un objeto al mbito de una variable.

Programacin Orientada a Objetos

1.Abstraccin: Supresin intencionada, u ocultamiento, de algunos detalles de un proceso o artefacto, con el objeto de destacar de manera ms clara otros aspectos, detalles o estructuras

Programacin Orientada a Objetos


2. Encapsulacin:
- fecha MiFecha +getDia() +getMes()

Proceso de almacenar en un mismo compartimento los elementos de una abstraccin que constituyen su estructura y su comportamiento

+getAo()
+setDia(int) +setMes(int) +setAo(int) - validarDia(int)

De afuera no se puede ingresar a este Mtodo.

Programacin Orientada a Objetos


3. Polimorfismo. El concepto de Polimorfismo es uno de los fundamentos para cualquier lenguaje orientado a Objetos, esto implica que un mismo Objeto puede tomar diversas formas.

Polimorfismo
Empleado [ ] x = new Empleado(4); x[0]= new Gerente(); x[1]= new Director();

Mtodos
import java.io.*; class CorrePerro { public static void main(String args[]) throws Exception { BufferedReader bf; bf = new BufferedReader(new InputStreamReader(System.in)); Perro tobby =new Perro(); int pesoperro=0; System.out.print("Ingrese el Peso del Perro : "); pesoperro=Integer.parseInt(bf.readLine()); tobby.setPeso(pesoperro); System.out.print("\n\n"+tobby.getPeso()); System.out.print("\n\n\n\n"); } }

Un objeto puede ser descendiente de otro. La tcnica consiste en recoger un objeto ya cerrado, sacar una copia y escribirle cosas encima: ms datos y/o ms mtodos. Aparece una relacin asimtrica de ascendientes/descendientes. No Olvidar: Primero analizar, disear, codificar y poner a punto (nunca repetir).

Los datos de los ascendientes existen en los descendientes; (no puede definir campos con igual nombre). Los mtodos de los ascendientes en principio los pueden usar los descendientes; pero estos pueden redefinirlos de nuevo, ocultando los de sus ascendientes.

Herencia Simple. Cliente

Herencia Mltiple. Automvil Barco

Cliente Minorista

Vehculo Anfibio
15

Diremos que es algo abstracto que define la FORMA del objeto.

Entonces diremos que, la clase seria el molde de los Objetos.

Mtodos: Acelerar, Frenar, Volver cambio etc.

Atributos: Color, tamao, Cantidad de cambios, etc.

Existe una clase especial muy til para crear jerarquas. Estas clases se llaman "clases abstractas", son como cualquier otra, pero definidas con la intencin de que sirvan como clase base de otras clases. O sea que nunca se va a crear una instancia de una clase abstracta, (nunca se crear un objeto de esa clase).

Se podra decir que una clase abstracta presenta la interfase comn para los objetos de clases derivadas.

17

Introduccin a Java

Qu es la Tecnologa JAVA?
Historia de JAVA Caractersticas de JAVA

La JVM (Maquina Virtual de JAVA)


Software?

Qu es la Tecnologa JAVA?

La Tecnologa Java es:


Un lenguaje de programacin. Un ambiente de desarrollo.(variadas herramientas, compilador, un interprete, generador de documentacin, etc) Un ambiente de aplicacin.

Historia de JAVA

Java fue diseado en 1990 por James Gosling, de Sun Microsysaaatems, como software para dispositivos electrnicos de consumo.
Curiosamente, todo este lenguaje fue diseado antes de que diese comienzo la era World Wide Web, puesto que fue diseado para dispositivos electrnicos como calculadoras, microondas y la televisin interactiva.

Caractersticas de JAVA
Provee un fcil uso del leguaje por:
Elimina muchos errores de otros lenguajes (punteros aritmticos y de memoria)

Diseo es Orientado a Objetos.


Permite al usuario crear cdigo independiente y claro. Provee un ambiente interpretado: En el desarrollo es ms rpido. Cdigo portable y mas eficiente.

Caractersticas de JAVA

Estas Caractersticas se satisfacen con:


La JVM. Garbage Collector.

Seguridad en el Cdigo.

La Maquina Virtual de Java

Es una maquina imaginaria implementada para emular el software como una maquina real, almacenando el cdigo en un archivo .class.
Permitiendo compilar todas las tecnologas de cdigo JAVA, dejndolas independientes de la plataforma.

Garbage Collector

Asignacin de memoria que ya no es necesaria, ya que podra ser reasignada.


En otros lenguajes la reasignacin de memoria es responsabilidad del programador. Garbage Collector, chequea y libera lo que ya no es necesario. Este se ejecuta automticamente durante el tiempo de vida del programa.

JRE (Java Runtime Environment)


Compile Java TestProgram.java

RunTime
Carga de Clase
Carga todo el ambiente necesario como los import

Verificacin del ByteCode

Javac

Carga desde el DD, Red u otra fuente

Cdigo reconocido y perteneciente a JAVA, es seguridad

TestProgram.class

Interpretado
Ejecuta cdigos escritos, If While For, etc.

Tiempo de Ejecucin
Lo dirige donde corresponde

Hardware

JRE (Java Runtime Environment)

En Definitiva, las tres tareas principales del JRE son:


Carga de Clases. Verificacin del Cdigo.

Ejecucin del Cdigo (interpretacin)


Importante: existe en los equipos que solo ejecutan aplicaciones, J2SDK es para desarrollo.

Instalacin del Software

Opcin 1
J2SDK JCREATOR

CONSOLA
Opcin 2 Netbeans

Ambiente de Desarrollo Jcreator v/s Consola

Ambiente de Desarrollo Netbeans

Ambiente de Desarrollo Netbeans

Compilacin y Ejecucin.
Toma

Compilador

Hola.java
Genera

Archivo fuente Bytecode

Hola.class
ByteCode Dj,sdsd, ss,74,3#,
VM

VM

La mquina virtual es un programa que ejecuta cdigo virtual, llamado Bytecode. Este cdigo de nivel menos que intermedio, no es entendido directamente por ningn procesador, y es la maquina la encargada de interpretarlo

El compilador de JAVA toma un programa fuente en Java, y lo traduce a bytecode

Primera Aplicacin.

class PrimeraAplicacion { public static void main(String args[]) throws Exception { System.out.println("Primera Aplicacin"); }
}

import java.io.*; class Segunda_Aplicacion { public static void main(String args[]) throws Exception { BufferedReader bf; bf=new BufferedReader(new InputStreamReader(System.in)); int op=0; System.out.print("\n\n\n\t\t\tMENU DE OPERACIONES MATEMATICAS"); System.out.print("\n\t\t\t~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"); System.out.print("\n\n\n\n\t\t\t\t 1. SUMAR"); System.out.print("\n\n\t\t\t\t 2. RESTAR"); System.out.print("\n\n\t\t\t\t 3. DIVIDIR"); System.out.print("\n\n\t\t\t\t 4. MULTIPLICAR\n\n\n\n\n"); do { System.out.print("\t\t\t Ingrese su Opcion --> "); op=Integer.parseInt(bf.readLine());//Permite almacenar el valor de la Base if (op<1 || op>4) System.out.print("\r\b...."); }while(op<=0 || op>=5); System.out.print("\n\n\t\tIngrese el Valor correcto "); }// cerrar main } //cerrar clase

Uso de Comentarios
Generar Comentario para Lnea de Cdigo.

// total=a+b+c;
Generar Comentario para Lnea de Cdigo. /* total=a+b+c;

promedio=total/contador; */
Generar Comentario para Lnea de Cdigo. /** Comentario para la documentacin */

Sentencias de Escape

Carcter \n

Denominacin Salto de Lnea

\t
\ \\

Tabulador
Comilla Doble Contrabarra

Identificadores Validos
Son nombres determinados para las variables, clases o mtodos.
Pueden comenzar con Unicode, subguin(_) o signo peso ($). Son sensitive-case y no tienen un largo mximo Ejemplos.

identificador
nombre_usuario $cambio

nombreUsuario
_variable_ppal

Tipos Primitivas

El lenguaje define los siguientes tipos primitivos:


Lgica boolean Texto char

Entero byte, short, int y long


Flotante double y float

Obs: Todas parten con minsculas y no son orientadas a objetos, solo son estructuras de datos.

Lgica - boolean

Este tipo de datos consta de dos estados, true o false.


boolean estado=true;

Obs.: Todo booleano es falso por defecto.

Texto char y String


char

Es representado por caracter Unicode de 16 bits


Debe ser encerrado entre comillas simples Es usada de la siguiente forma:

a
\t \u????

Letra a
Un tabulador Caracter del Unicod

\u03A6-signo pi ()

Texto char y String


String No es un tipo de dato primitiva, esta es una clase Debe ser encerrado entre doble comillas Es usada de la siguiente forma: String nombres = Josesito del Rosario

String error = Error de Sistema !!!!!!!


String cadena1, cadena2, cadenan;

Enteros byte, short, int y long.


Son usados de tres formas, en decimal, octal y hexadecimal.

2
077

- Este es un entero decimal.


- 0 indica valor octal, 77 indica nmero final

0xBAAC - 0x comienzo valor hexadecimal

Los tipos de datos por defecto son int


Los Tipos de datos con sufijo L o l son long 2L - indica que el valor 2 es representado como un long value

Enteros byte, short, int y long.


Entero Largo Nombre Rango

8 bits
16 bits 32 bits

Byte
Short Int

-27 a 27 -1
-215 a 215 -1 -231 a 231 -1

-127 a 127
-32.000 a 32.000 -2.147.000.000

64 bits

Long

-263 a 263 -1

?????

Coma Flotante float y double


Trabaja por dos enteros separados por un punto.

E o e (agrega un valor exponencial)


F o f (float) D o d (double)

3.14 : Es un float simple.


6.02E23 : Es un flotante largo 2.718F : Es un flotante simple 123.4E+306D : Es un double largo

Coma Flotante float y double

Float Largo 32 bits 64 bits

Nombre Float Double

Ejercicos

En base a la informacin buscada desarrolle una aplicacin en la cual se apliquen todos los tipos de datos, en cuanto a su declaracin, inicializacin, almacenamiento y finalmente salida por pantalla.

Manejo de Casting
En Java se realizan automticamente conversiones de una variable primitiva de un tipo a otra de otro, de igual o mayor precisin, siempre y cuando se respeten los rangos asociados al tipo convertido. As, pasar de byte a short, de short a int, de byte a int, es automtico siempre y cuando el entero a convertir no supere el rango del tipo convertido; en definitiva. byte-->short-->int-->long-->float-->double

Manejo de Casting
Para finalizar con el casting entre primitivas, conviene tener en cuenta lo siguiente: No es posible realizar casting entre una variable primitiva booleana y cualquier otra variable primitiva.

S es posible realizar casting entre una variable primitiva char y una variable primitiva que almacene enteros.
int num=164; char letra=(char)num;

Uso de Operadores (2)

IaD IaD IaD IaD DaI DaI

^ | (evala cada una de las condiciones) && (evala criterio, no cumple se sale) || ?: (if abreviado) = *= /= %= += -= <<= >>= >>>= &= ^= |=

Ejemplos.

Y=5 X=6 Z=++Y+X

1.- Y=6 2.- X=6 3.- Z=12

Y=5 X=6 Z=X+Y++

1.- X+Y=11 2.- Z=11 3.- Y=6

Ejemplos.

i=10; if (7 > 8) & ((++i) > 5)


1.- Al momento de evaluar con 1 &, este convierte i en 11 y luego prosigue con la evaluacin. 2.- Si evaluase con 2 &, el valor de i sera 10.

Uso de Switch switch (expr 1) { case constante 1: sentencias; break; case constante n: sentencias; break; default : sentencias; break; }

Uso de For
for (inicializacin; preg_bool; incre) { sentencias en el bloque; } for (int i = 0; i<10; i++) { System.out.print(\nRepeticion N+i); } System.out.print(\nEl Valor final de i es +i);

Uso de While
while (boolean) { sentencias en el bloque; } int i=0; while (i < 10) { System.out.print(\nRepeticion N+i); i++; } System.out.print(\nEl Valor final de i es +i);

Uso de Do - While
do {
sentencias en el bloque; } while (boolean); int i=0; do { System.out.print(\nRepeticion N+i); i++; } while (i < 10); System.out.print(\nEl Valor final de i es +i);

Uso de Do - While
do {
sentencias en el bloque; } while (boolean); int i=0; do { System.out.print(\nRepeticion N+i); i++; } while (i < 10); System.out.print(\nEl Valor final de i es +i);

Uso de Contadores y Acumuladores

int cont=0, acum=0,edad=0; cont=cont+1; //cuenta de uno en uno acum=aum+edad; //realiza la sumatoria de las edades

Ejercicios.
Desarrolle una aplicacin que permita ingresar los siguientes datos para 10 personas: 1. Edad. 2. Sexo. (M o F) 3. Sueldo base. Luego responda lo siguiente: 1. Cantidad de hombres y de mujeres ingresadas. 2. Promedio de los hombres y mujeres mayores de edad. 3. Promedio de los sueldos base de las mujeres. 4. Cantidad de sueldos superiores a $200.000. 5. Cantidad de sueldos inferiores al mnimo. 6. Total de sueldos para mujeres y para hombres (independiente) 7. Total de sueldos (ambos sexos). 8. Cantidad de sueldos pagados a menores de edad.

Arreglos Unidimensionales
Los Array se usan normalmente para agrupar objetos del mismo tipo. Permiten hacer referencia al grupo de objetos a travs de un nombre comn Es posible declarar array de cualquier tipo, ya sea de tipos primitivos o de clases. char[] s; Alumno[] a; // Alumno es un clase. Al declarar arrays con los corchetes a la izquierda, stos se aplican a todas las variables situadas a la derecha de los corchetes. char s[]; Alumno a[]; // Alumno es un clase.

Creacin de los Arreglos


Como en el caso de los dems objetos, los arreglos pueden crearse utilizando la palabra clave new . Por ejemplo, para crear un array de un tipo primitivo (char), utilice. s=new char[26]; // los valores son inicializados con \u0000
Pila de Ejecucin Espacio de Memoria dinmica

public char[] crearArray() { char[] s; s=new char[26]; for(int i=0;i<26;i++) { s[i]=(char)(A+i); } return s; }

char[] A
B C s crearArray this main Z D

Creacin de los Arreglos


Como en el caso de los dems objetos, los arreglos pueden crearse utilizando la palabra clave new . Por ejemplo, para crear un array de un tipo primitivo (char), utilice. s=new char[26]; // los valores son inicializados con \u0000 public char[] crearArray() { char[] s; s=new char[26]; for(int i=0;i<26;i++) { s[i]=(char)(A+i); } return s; }
Pila de Ejecucin

char[] A
B C s crearArray this main Z D

Creacin de los Arreglos


Pila de Ejecucin char[] A B C s crearArray this main Z D

También podría gustarte