Académique Documents
Professionnel Documents
Culture Documents
presupuestado?
El cliente quedar satisfecho?
la $.
Las Metodologas pueden ser la ayuda que
necesitamos, si podemos usarlas correctamente !!
Construccin de una casa para fido
Herencia
Bases de la Programacin
Abstraccin
Encapsulacin
Modularidad
Jerarqua
Bases de la Programacin
Cdigo Mquina
Lenguaje Ensamblador
Programacin de alto nivel
Programacin estructurada
Programacin modular
Tipo Abstracto de datos
POO
Evolucin de los lenguajes de
programacin
Cdigo Mquina
Abstraccin: {0,1}
Encapsulacin: Nula
Modularizacin: Nula
Jerarquizacin: Nula
Evolucin de los lenguajes de
programacin
Lenguaje Ensamblador
Abstraccin: Identificadores
Encapsulacin: Nula
Modularizacin: Macros
Jerarquizacin: Nula
Evolucin de los lenguajes de
programacin
Abstraccin: Subprograma
Encapsulacin: mbito de subprogramas
Modularizacin: Estructuras de control de flujo y
Subprograma
Jerarquizacin: Estructuras de control de flujo y
Subprograma
Evolucin de los lenguajes de
programacin
Abstraccin: Total
Encapsulacin: Total
Modularizacin: Total
Jerarquizacin: jerarquas de dependencia
jerarquas de composicin
Evolucin de los lenguajes de
programacin
Abstraccin: Total
Encapsulacin: Total
Modularizacin: Total
Jerarquizacin: jerarquas de clasificacin
Evolucin de los lenguajes de
programacin
Abstraccin
Encapsulacin +Aumento de la
Modularizacin Comprensin del Software
Jerarquizacin
+ Legibilidad
+Facilidad de Mantenimiento
-Costes
Evolucin de los lenguajes de
programacin
Objetivo
Creacin de
Cdigo
Coste de
Mantenimiento
int datastack[100];
int datatop = 0; Los datos del stack no pueden ser
void init() { locales a cada funcin
datatop=0; Slo hay dos opciones: Locales o
} Globales -> Globales
void push (int val) { Globales -> no hay forma de
if (datato <100) limitar la visibilidad de esos
datastack [datatop++] = val; nombres.
} El nombre datastack debe estar en
void top () { conocimiento de los otros
if (datatop >0 ) programadores.
return (datastack [datatop-1]); Los nombre init, pus, top, pop, ya
} no pueden ser usados.
int pop() {
if (datatop >0)
return (datastack [--datatop]);
return 0;
}
Ejemplo: Un Stack
Mamfero
Perro Humano Flor Clases
Vendedor Ingeniero
Clavel
Florista Ingeniero Electrnico
Acelera()
velocidad
Frena()
Herencia
Es un tipo de relacin
Relacin es un
Entre Clases
Va de la generalizacin a la
especializacin Transporte
Clase base
Acelera
Frena
Clase derivada
Hereda la implementacin Automvil
Jerarquas de Clase
Transporte
Auto
Acelera
Frena
Cohete
Acelera
Frena
Transporte
Acelera
Frena
Caballo
Acelera
Frena
Entorno en Java y Diseo
orientado a objetos
Punteros
Asignacin de memoria (malloc)
Herencia mltiple
Sobrecarga de operadores
Independiente de:
Tipo de computador
Sistema operativo
Sistema de ventanas (win32, Motif, etc...)
Compilacin
Tiempo
Compilacin PC
Tiempo Carga y
PC +JVM
ejecucin
Texto
bytecode Mac
fuente Mac
+JVM
Java
*unix *unix
+JVM
JVM es la Java Virtual Machine,
Una para cada plataforma.
Trabajando con Java
Diseo
Creacin programa: Con editor crear
programa *.java (FirstSample.java)
Editor
Hacer uso de documentacin en
manuales.elo.utfsm.cl FirstSample.java
Compilacin: va el comando el lnea
$ javac FirstSample.java $javac FirstSample.java
Ejecucin:
$java FirstSample
Hay ambientes de trabajo ms
FirstSample.class
amigables para hacer estas tareas.
$java FirstSample
Editores de texto
Informacion de JavaOne:
900+ millones de microcomputadoras corriendo Java
300 millones de descargas de Java desde junio del 2003
12 millones de visitas por mes al sitio java.com
5 millones de desarrolladores Java en el mundo
180,000 desarrolladores registrados en java.net
1+ billon de celulares corriendo java alrededor del mundo
El Mercado en nmeros
Informacion de JavaOne:
635 modelos de celular en el mundo con Java
32 fabricantes de celulares con soporte para Java
140 operadoras de telefonia movil usando Java
3 millones de descargas de JavaEE
28 tipos diferentes de servidores Java
eBay confia en Java para sus ventas que traspasan
los $1,400.00 por segundo!
El mercado en numeros
EEUU $4500
Chipre $2000
Austria $1500-3500
Alemania $2000-4500
Suiza $4000-8000
Rusia $800-1000
Francia: $2000-4000
Certificaciones
Clase Comportamiento
Puente Colapsa con vientos sobre 50km/h.
Flexin de cubierta proporcional a la carga.
Mtodos
Operaciones o servicios sobre objetos de una clase
Crear (constructor) y destruir objetos
obtener valores de los atributos de un objeto
Encontrar coordenadas x, y de un punto
Encontrar el largo de una lnea
Encontrar el permetro de un rectngulo
modificar los atributos de un objeto
trasladar un punto cambiando sus coordenadas
estirar un lnea
expandir un rectngulo cambiando su ancho y
alto
Ejemplo de clase
Rectangle
Consideremos primero los mtodos:
Rectangle crea (construye) un rectngulo
getWidth obtiene el ancho
getHeight obtiene el alto
setWidth cambia el ancho
SetHeight cambia el alto
para hacer la clase ms til, definimos
Rectangle
Consideremos primero los mtodos:
Rectangle Notar la convencin
crea (construye)deunnombres en Java
rectngulo
getWidth operationTarget
obtiene el ancho
getHeight obtiene el alto
setWidth cambia el ancho
SetHeight cambia el alto
para hacer la clase
minscula ms til, definimos
Mayscula inicial
No es obligacin ..
getPerimeter calcula el permetro
Fuertemente recomendada -
getArea calcula el rea
la API de Sun la usa
Ejemplo de clase- Cdigo java
class Rectangle {
private double width, height; // atributos
double Height( ) {
return height; // simplemente retorna
Rectangle.java } // valor de atributo
double Width( ) {
return width;
}
double getArea( ) {
return width*height; // retorna el valor de un atributo
} // el cual es calculado
double getPerimeter( ) {
return 2.0*(width + height);
}
double Height( ) {
return height; // simplemente retorna
} // valor de atributo
class Rectangle {
double Width( ) {
return width;
}
private double width, height; // atributos
double getArea( ) {
return width*height; // retorna el valor de un atributo
} // el cual es calculado
.......
double getPerimeter( ) {
} return 2.0*(width + height);
}
double Height( ) {
return height; // simplemente retorna
Rectangle.java
class Rectangle {} // valor de atributo
double Width( ) {
return width;
private double width, height;
}
// atributos
double getArea( ) {
return width*height; // retorna el valor de un atributo
....... } // el cual es calculado
} double getPerimeter( ) {
return 2.0*(width + height);
}
Delimitadores de
void setHeight( double
height = h;
h ) {bloque// actualizacin (mutador)
// cambia el valor de un atributo
}
double Height( ) {
return height; // simplemente retorna
Rectangle.java } // valor de atributo
class Rectangle {
double Width( ) {
return width;
}
private double width, height; // atributos
double getArea( ) {
return width*height; // retorna el valor de un atributo
} // el cual es calculado
.......
double getPerimeter( ) {
} return 2.0*(width + height);
} Atributos
Delimitadoresvoidde
height = h;
bloque
setHeight( double h ) { // actualizacin (mutador)
// cambia el valor de un atributo
}
double Height( ) {
return height; // simplemente retorna
Rectangle.java } // valor de atributo
class Rectangle {
double Width( ) {
return width;
}
private double width, height; // atributos
double getArea( ) {
return width*height; // retorna el valor de un atributo
} // el cual es calculado
....... Atributos
double getPerimeter( ) {
} return 2.0*(width + height);
Notar: salvo excepciones,
} los atributos
deben ser privados private!
void setHeight( double h ) { // actualizacin (mutador)
height = h; // cambia el valor de un atributo
}
Desde http://java.sun.com/
Hay versiones para solaris, linux y windows.
Ver: http://java.sun.com/javase/technologies/index.jsp
Instalacin
Booleano
boolean
true and false
Enteros
int 4 bytes Ej: 24, 0xFA, 015
short 2 bytes
long 8 bytes Ej: 400L
byte 1 byte
Punto flotante
float 4 bytes Ej: 3.14F (6-7 dgitos signif.)
double 8 bytes Ej: 3.14D (15 dgitos signif.)
Tipos primitivos (no son objetos)
Carcter: char
Unicode
Usa dos bytes
Diseado para internacionalizacin
Comillas simples: a, A, !, 1, ...
Forma hexadecimal \u0008 (Unicode
backspace)
El byte menos significativo corresponde al
ASCII de 8 bits.
No visibles : Ej:
\b backspace \t tab
\n linefeed \r return
\ double quote \ single quote
\\ el mismo backslash!
Constantes
Se usa la palabra reservada final
Ej: public final float CM_PER_INCH=2.54;
Si deseamos crear slo una instancia de
esta constante para todos los objetos de
una clase, usamos:
public class Constante
{
public static final float MC_PER_INCH=2.54;
...}
El valor se accede: Constante.CM_PER_INCH
Cambios de tipo automticos
char
float double
Operadores y su precedencia
[] . ( ) (invocacin)
! ~ ++ -- + - (<tipo o clase> ) new
*/%
+-
<< >> >>>
< <= > >= instance of
== !=
&
^
|
&&
||
?:
= += -= *= /= %= &= |= ^= <<= >>= >>>=
String
Ver documentacin
Revisar mtodos:
hasNext(): hay ms datos en entrada?
next(): retorna prximo token.
hasNextType(): Type es tipo bsico. verdadro si
hay dtal dato a continuacin. Type es boolena,
Byte, Double, Float, Int, Long y Short.
nextType(): retorna el dato del tipo Type a
continuacin.
Ver tambin: hasNextLine(), nextLine();
findInLine(String s);
Entrada de datos simple va grfica
IF
if( exp ) statement1;
else statement2;
if (a>b) x = a;
else x = b;
else // es opcional
if ( x[i] > max ) max =
x[i];
Sentencias - Bucles
while
while( exp ) statement1;
while( exp ) { statements; }
do
do statement; while( exp );
do { statements; } while( exp
);
do a = x[i++]; while( a>z );
do {
x = getX( ... );
y = y + x;
} while ( x > 0 );
do implica al menos un viaje
Sentencias - Bucles
for
for( exp1; exp2; exp3 ) { s; }
equivalente a:
exp1;
while ( exp2 )
{ s; exp3; }
for( k=0; k<n; k++ ) { s; }
equivale a:
k=0;
while( k<n ) { s; k++; }
Patrn estndar para n iteraciones!
Sentencias - switch
switch( exp1 ) {
case x1: s1; break;
case x2: s2; break;
default: s3;
}
Ejemplo:
switch( x ) {
case 1: y = a; break;
case 2: y = b; break;
default: y = c;
}
Break y continue
Envoltorios (Wrappers)
Crean objetos para los tipos estndares.
java.lang
Boolean
Integer
Long
Character
Float
Double
Un mtodo importante en estas clases nos permite
transformar un string que contiene nmeros en un
tipo bsico. Ej: int a = Integer.parseInt(3425);
hace que a tome el valor 3425.
Se us en ejemplo InputTest.java
Objetos y Clases en Java
Creacin de objetos nuevos
Se usa el constructor de la clase
MiClase a = new MiClase();
Todos los objetos son creados en el heap
(memoria asignada dinmicamente durante la
ejecucin).
Lo que se retorna es una referencia al nuevo
objeto (puede ser pensada como puntero).
Nota no existe destructor (en C++ s)
Java tiene un proceso de recoleccin de
basura (Garbage Collection) que
automticamente recupera zonas no
referenciadas.
Constructores
Cheque pejAcct;
pejAcct.deposit(1000000); // error
pejAcct name
balance
chqNum
Este ejemplo asume que la clase Cheque ya existe y posee
miembros datos: name, balance y chqNum
Asignacin
Cheque jmAcct;
jmAcct
jmAcct = pejAcct;
jmAcct
name
pejAcct balance
chqNum
Implicancias de referencias
Modificador de Visibilidad
acceso
public Todas partes
protected en sub-classes & pkg
omitido En el paquete
private Slo en la clase