Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Introducción
Los problemas suelen tener varias soluciones posibles.
En programación existen diversas metodologías que nos
ayudan a enfrentar un problema.
Cada metodología tiene diversos lenguajes que las
soportan.
– Algunos lenguajes soportan varias metodologías.
Metodología Lenguaje
Estructurada Fortran, C, Pascal, Basic
Orientada a objetos C++, Java, Smalltalk
(OOP)
Programación Orientada a Objetos
Definición:
La Programación Orientada a Objetos (OOP) es un
método de programación en el cual los programas se
organizan en colecciones cooperativas de objetos,
cada uno de los cuales representa una instancia de
alguna clase, y cuyas clases son, todas ellas,
miembros de una jerarquía de clases unidas mediante
relaciones de herencia.
Comentarios:
Usamos objetos en lugar de algoritmos como bloque fundamental
Cada objeto es una instancia de una clase
Las clases están relacionadas entre sí por relaciones tan
complejas como la herencia
Ventajas de la POO
Proximidad de los conceptos modelados
respecto a objetos del mundo real
Facilita la reutilización de código
– Y por tanto el mantenimiento del mismo
Se pueden usar conceptos comunes durante
las fases de análisis, diseño e implementación
Disipa las barreras entre el qué y el cómo
Desventajas de la POO
Mayor complejidad a la hora de entender el
flujo de datos
– Pérdida de linealidad
Requiere de un lenguaje de modelización de
problemas más elaborado:
– Unified Modelling Language (UML)
– Representaciones gráficas más complicadas
Conceptos de la OOP
Conceptos básicos Tipos de relaciones
Objeto Asociación
Clase Herencia
Agregación
Características de la OOP
Abstracción: Instanciación
Encapsulamiento:
Modularidad: Representaciones gráficas
Jerarquía Diagramas estáticos (de
clases, de objetos...)
Otros conceptos OOP
Diagramas dinámicos (de
Tipos
interacción...)
Persistencia
¿ Por qué JAVA (por qué tan famoso ) ?
Salida
P1.class del
P1.java
Prog.
int i;
int i = 1;
double pi = 3.14159;
char c = ‘a’;
boolean estamos_bien = true;
Las declaraciones de variables pueden ir en cualquier parte
del programa pero siempre antes de que la variable sea
usada.Hay que tener cuidado con el rango de validez
(scope) de la declaración
10
Expresiones y asignación
11
Conversiones de tipo
Java no reclama si un tipo de menor rango se
convierte as uno de mayor rango.
byte < short < int < long < float < double
Tipo Bits Rango
int 32 -2**31 .. 2**31-1
short 16 -2**15 .. 2**15-1
byte 8 -2**7 .. 2**7-1
long 64 -2**63 .. 2**63-1
float 32 -10**32 .. 10**32
double 64 -10**300 .. 10**300
12
Ejemplos
int i = 1;
long l = i; //ok
l = 1000000000000;
float f = l; //ok
double d= 1.0e24; int i = d; // Error
float f = 1.0f; int i = f; // Error
short s = i; //Error
double d = 1.0; int i = (int)d; //ok
int i = 256;
byte b = (byte)i; //ok pero b ==0;
13
Instrucciones de Control
14
Programa Ejemplo
15
Objeto y Clase
Un objeto es algo de lo Una clase describe los
que hablamos y que objetos del mismo tipo
podemos manipular Todos los objetos son
Existen en el mundo real instancias de una clase
(o en nuestro Describe las propiedades y el
entendimiento del mismo) comportamiento de un tipo de
objetos
Objeto:Clase Clase
Atributo1=valor Atributos
Atributo2=valor
... Operaciones
Conceptos OOP: Abstracción
Nos permite trabajar con la complejidad del mundo real
– Resaltando los aspectos relevantes de los objetos de una
clase
– Ocultando los detalles particulares de cada objeto
Separaremos el comportamiento de la implementación
Es más importante saber qué se hace en lugar de cómo
se hace:
Un sensor de temperatura
– Se define porque...
mide la temperatura
nos muestra su valor
se puede calibrar...
– No sabemos... (no nos importa)
cómo mide la temperatura
de qué está hecho
cómo se calibra
Conceptos OOP: Abstracción
La abstracción no es única:
Ejemplo: Un paralelogramo
Figura plana
Escaleno
Herencia simple
Rectángulo Cuadrado
Superclase Subclase
Relación de Agregación
Una clase contiene a otra
clase
– Ésta “es parte de” aquélla.
También se denomina
relación “es parte de” (has a)
Una clase puede contener a otra:
– Por valor: Cuando los objetos de la clase
contenida se crean y destruyen al mismo
tiempo que los de la clase continente
– Por referencia: Cuando no necesariamente
ocurre lo anterior
Relación de Agregación
Ruedas
Relación de Instanciación
En determinados casos una clase (p.ej. un
vector) puede implementarse
independientemente del tipo (real, complejo,
color...) de alguno de sus atributos:
Tipo
– Definimos una clase
parametrizada o template Vector
(plantilla)
– Para cada uno de los tipos
que necesitemos
VectorColores VectorEnteros
definimos una nueva <Color> <int>
clase Instanciación
Representaciones gráficas
Nos sirven para comunicarnos con otros usuarios o
desarrolladores.
Documentan nuestro sistema
Hay múltiples vistas y tipos de diagramas:
– Estáticos
Diagramas de clases Los de los ejemplos
Diagramas de objetos
...
– Dinámicos:
Diagramas de estado: Muestra el ciclo de vida de los objetos,
sistemas, etc...
Diagramas secuenciales: Muestra como los objetos interaccionan
entre ellos
...
Diagrama de estado: Un ascensor
llegué subir
llegué
Bajando al
primer piso
bajar
time-out
Diagrama secuencial: Impresión