1. Contenido
• Determinar los objetos
relevantes para un problema en
particular
• Atributos y métodos
• Definición y diseño de clase
• Definición de herencia
• Variables y Constantes
• Variables Primitivas
• Tipos primitivos
2. Orientación a Objetos
Paradigmas de
Programación
Programación Declarativa Programación Imperativa
Funcional Orientada a Objetos
Lógica Visual, Orientada a Eventos,
Orientada a Aspectos, etc.
3. Orientación a Objetos
• Es un paradigma de programación que usa objetos y sus
interacciones, para diseñar aplicaciones y programas
informáticos.
• Está basado en varias técnicas, incluyendo herencia,
abstracción, polimorfismo y encapsulamiento.
• Simula es el primer lenguaje de POO.
• Su uso se popularizó a principios de la década de los años
1990. En la actualidad, existe variedad de lenguajes de
programación que soportan la orientación a objetos:
Java, C++, Smalltalk
5. Diseño Orientada a Objetos
Dado el enunciado o texto descriptivo de un problema
(que surge como parte del análisis):
1. Obtener una lista de objetos candidatos subrayando
todos los sustantivos o nombres.
2. Filtrar o depurar la lista para obtener los objetos
relevantes para el dominio del problema.
6. Diseño Orientada a Objetos
Tips para filtrar la lista de objetos candidatos:
• Es el objeto necesario para darle solución a algún
requerimiento mencionado en el enunciado?
• Es el objeto necesario para la interacción del usuario y el
sistema?
• Puede ser un objeto independiente?
• Es atributo de otro objeto?
• Esta dentro de los limites del problema?
• No es sinónimo de otro objeto previamente
seleccionado?
7. Diseño Orientada a Objetos
¿Como determinar los atributos de los objetos?
En el proceso de depuración de objetos:
• Determinaremos muchos objetos que serán a su vez
atributo de otro objeto.
• Determinaremos atributos de tipo primitivo: enteros,
reales, booleanos o carácter.
8. Diseño Orientada a Objetos
¿Como determinar los métodos de los objetos?
Dado el enunciado o texto descriptivo de un problema
que surge como parte del análisis):
o Obtener una lista de verbos o acciones.
o Determinar a que objeto de los ya relevantes le
pertenece.
Nota: si ese verbo x permite responder con lógica lo
siguiente:
¿Que es lo que el objeto y puede hacer?
El objeto y puede hacer x !
9. El problema:
Una cadena de tiendas desea ampliar sus ventas a través de internet.
Mensualmente generan un catálogo de artículos de vestir, en donde
muestran la descripción (talla, color, etc.), precio y las promociones.
El sistema de venta por catálogo deberá registrar todos los datos del
cliente cuando sea la primera compre vía web.
Se requiere que se mantenga actualizado el inventario al concretarse
una compra. La entrega de los productos será vía mensajería en un
lapso de 3 días hábiles si el cliente se encuentra en el mismo estado y
de 5 días si esta en uno diferente. Se aceptan solo pagos con tarjetas
(débito, crédito o monedero electrónico de la tienda.
10. Diseño Orientada a Objetos
• Obtener la lista de objetos candidatos
• Filtrar la lista
• Determinar atributos
• Determinar métodos
11. Diseño Orientada a Objetos: Clase
• Una construcción que se utiliza como un modelo (o
plantilla) para crear objetos.
• En esta estructura se definen las propiedades
(atributos) y el comportamiento (métodos) de los
objetos.
• En diseño para representar una clase se usará un
rectángulo dividido en 3 partes.
13. Diseño Orientada a Objetos: Clase
• Para el problema visto en clase, “Venta de productos por
catálogo” identificamos los siguientes objetos relevantes:
o Cliente
o Camisa (especialización de Articulo de Vestir)
o Catalogo
o Orden de Compra
o Tarjeta
o Tienda
14. Diseño Orientada a Objetos: Clase
Cliente:
nombre
direccion
telefono
fechaNacimiento
ordenesDeCompra
OrdenCompra:
fecha
camisas
montoTotal
estado
tarjeta
Camisa
codigo
precio
talla
codigoColor
modelo{niño, niña,
dama. caballero}
15. Diseño Orientado a Objetos
Herencia:
• Mecanismo de la POO que permite crear una clase a
partir de otra existente.
• A través de la herencia se elimina la redundancia y se
promueve la reusabilidad.
• Surgen conceptos como: superclase, subclase,
generalización, especialización.
• La Herencia se “detecta” en diseño, a través de la
generalización o la especialización
16. Diseño Orientado a Objetos: Herencia
Persona
nombre
fechaNacimiento
direccion
Cliente
codigoCliente
compras
Articulo
código
precio
porcentajeDescuento
fabricante
Camisa
Modelo
Talla
color
17. Programación Orientada a Objetos: Clase
Usando el lenguaje Java:
• Se debe definir un archivo fuente con la extensión .java
• El nombre del fuente debe ser exactamente el nombre de la
clase
• Esta clase se debe definir con la palabra reservada public.
• Solo debe existir una clase pública por archivo fuente.
• En la clase publica vamos a definir el método principal
llamado main que es por donde comienza la ejecución del
programa
• A esta clase con el método main le vamos a llamar Clase
Principal.
18. Programación Orientada a Objetos: Clase
Usando el lenguaje Java:
• Se debe definir un archivo fuente por cada clase
resultante de la lista de objetos relevante
• Generalmente estas clase son públicas
• No tienen al método main
• En estas se definen los atributos y métodos que
tendrán una colección de objetos del mismo tipo.
19. Programación Orientada a Objetos: Clase
Clase en Java: El archivo se llama Principal.java
//Esta es una clase. Solo una publica por archivo
fuente
public class Principal {
/*Este es el método por donde inicia la ejecución de
un programa java
*/
public static void main(String[] a){
//aquí va el código (procesos)
}
}
20. POO: Constantes
• Valor que no puede ser alterado durante la ejecución de un
programa.
• Puede ser declarado e inicializado en dos instrucciones diferentes,
pero una vez que se ha asignado su valor este no puede variar.
• Una constante corresponde a una longitud fija de un área reservada
en la memoria principal del computador, donde el programa
almacena valores fijos.
• Por ejemplo:
o El valor de PI = 3.1416
o Por conveniencia, el nombre de las constantes suele escribirse
en mayúsculas en la mayoría de lenguajes.
21. POO: Constantes
En java una constante se declara usando la palabra
reservada final:
public class Circunferencia {
public double radio;
public final double PI= 3.1416;
}
22. POO: Variables
• Estructuras de datos que, como su nombre indica, pueden
cambiar de contenido a lo largo de la ejecución de un
programa.
• Una variable corresponde a un área reservada en la memoria
principal del computador pudiendo ser de longitud:
o Fija: Cuando el tamaño de la misma no variará a lo largo de
la ejecución del programa. Típicamente enteros, reales,
caracter.
o Variable.‐ Cuando el tamaño de la misma puede variar a lo
largo de la ejecución. Típicamente colecciones de datos
23. POO: Variables
• A través de las variables y constantes se programan los
atributos de una clase de objetos. En java existen dos tipos de
variables:
o Variable primitivas
o Variable objetos (variable de instancia, variable miembro,
variable referencia)
24. POO: Variables primitivas
• Son las declaradas como tipos primitivos.
• El Lenguaje de Programación Java define ocho:
o Lógicos – boolean
o Textual – char
o Enteros – byte, short, int, y long
o Punto Flotante – double y float
25. POO: Variables primitivas
Lógicas – boolean
• Los tipos de datos booleanos tienen dos posibles
valores: true y false.
• Por ejemplo la siguiente sentencia:
boolean cierto = true;
• Por defecto una variable booleana es inicializada
false.
26. POO: Variables primitivas
Textual – char y String
Char
• Representa a un carácter en Unicode de 16 bits.
• Debe tener su literal encerrado en comillas simples (’ ’)
• Ejemplos:
o 'a' letra a
o 't' Un tabulador
o 'u????' Un caracter especificado en el Unicode
????. Por ejemplo : ’u03A6’ es la letra griega phi [Φ])
27. POO: Variables referencia
Textual – char y String
String
• NO es un tipo de dato primitivo. Es una Clase.
• Un literal String va encerrado en comillas dobles (" ").
• La forma mas sencilla de crear un objeto String es:
String saludos = “Buenos dias !! n";
String mensajeError = “Registro no encontrado!“;
28. POO: Variables primitivas
Enteros – byte, short, int, and long
• Se usan en tres formas – Decimal, octal, o
hexadecimal:
o 2 Entero 2 en decimal
o 077 El prefijo 0 indica un entero en Octal
o 0xBAAC El prefijo 0x indica un entero en
Hexadecimal
Los enteros por defecto son de tipo int
Literales con sufijo L o l son de tipo long
29. POO: Variables primitivas
• Los tipos de datos enteros tienen un rango de
representación de: [‐2n‐1] a [2n‐1 – 1]
o 8 bits para un tipo byte
o 16 bits para un tipo short
o 32 bits para un tipo int
o 64 bits para un tipo long
30. POO: Variables primitivas
• Punto Flotante – float y double
• Un literal en punto flotante generalmente posee un
punto decimal con algunos de los siguientes literales:
o E o e (agrega un valor exponencial)
o F o f (float)
o D o d (double)
31. POO: Variables primitivas
Punto Flotante – float y double
3.14 Un valor double
6.02E23 Un valor double expresado en exponencial
2.718F Un valor float
123.4E+306D Un gran valor double con un literal D
redundante.
Los punto flotante por defecto son de tipo double y son
inicializados en 0.0.
33. POO: Variables primitivas
1 public class Assign {
2 public static void main (String args []) {
3 // declare integer variables
4 intx, y;
5 float z = 3.414f;
6 double w = 3.1415;
7 boolean truth = true;
8 char c;
9 String str;
10 String str1 = "bye";
11 c = 'A';
12 str = "Hi out there!";
13 x = 6;
14 y = 1000;
15 }
16}
34. POO: Casting
• Un casting en una conversión explícita de tipos de
datos.
• El compilador “exige” que se realice, cuando detecta
una asignación de un tipo de mayor rango de
representación a uno de un rango menor.
• Si la asignación es de una variable de menor rango a
otra de mayor rango la conversión es implícita y se
llama promoción de tipos.
• El castin consiste en colocar entre paréntesis y en forma
de prefijo a la variable de rango mayor, el tipo a la cual
se quiere convertir.
35. POO: Casting
:
long var1;
short var2;
var1 = var2; //aquí ocurre promoción de tipos (implícita)
Promoción
byte short int long
Casting requerido
long var1;
short var2;
var2 = (short) var1; //aquí se hace un casting (explicita)
36. POO: Casting
:
double var1;
float var2;
var1 = var2; //aquí ocurre promoción de tipos (implícita)
Promoción
float double
Casting requerido
double var1;
float var2;
var2 = (float) var1; //aquí se hace un casting (explicita)