Você está na página 1de 150

Eficiencia: La eficiencia del software es su capacidad para hacer un buen uso

de los recursos que manipula.


Transportabilidad (portabilidad) : La transportabilidad o portabilidad es la
facilidad con la que un software puede ser transportado sobre diferentes
sistemas fsicos o lgicos.
Verificabilidad: La verificabilidad es facilidad de verificacin de un software; es
su capacidad para soportar los procedimientos de validacin y de aceptar juegos
de pruebas o ensayos de programas.
Integridad: La integridad es la capacidad de un software para proteger sus
propios componentes contra los procesos que no tengan derecho de acceso.
Fcil de utilizar: Un software es fcil de utilizar si se puede comunicar con l
de manera cmoda.
Correccin: Capacidad de los productos software de realizar exactamente las
tareas definidas por su especificacin.
Robustez: Capacidad de los productos software de funcionar incluso en
situaciones anormales.
Extensibilidad: Facilidad que tienen los productos de adaptarse a cambios en
su especificacin. Existen dos principios fundamentales para conseguir esto:
diseo simple
descentralizacin
Reutilizacin: Capacidad de los productos para ser reutilizados, en su
totalidad o en parte, en nuevas aplicaciones.
Compatibilidad: Facilidad de los productos para ser combinados con otros.
Que es un paradigma ?
Paradigma: Modo de Pensar expresado en
breve (Un punto de vista personal, una
metfora, un esquema-mental, una visin del
Mundo o cosmovisin)
Por ejemplo: Cmo pensaba la gente que era
la Tierra antes de 1492?


Existen muchos paradigmas de
programacin diferentes, cada uno
de ellos tiene sus propias
caractersticas y tratan de solucionar
los problemas clsicos del desarrollo
de software desde diferentes
perspectivas y filosofas
Que es un paradigma de programacin ?
El paradigma de programacin representa
un enfoque particular o filosofa para la
construccin del software.

El enfoque no es mejor uno que otro sino
que cada uno tiene ventajas y
desventajas. Tambin hay situaciones
donde un paradigma resulta ms
apropiado que otro.


Terminologa de la POO
Clase
Objeto
Atributos
Mtodos
Instancia
Abstraccin
Encapsulamiento
Modularidad
Jerarqua
Generalizacin


Herencia
Asociacin
Agregacin
Polimorfismo
Constructor
Destructor
Miembro Pblico
Miembro Privado
Miembro Protegido

El elemento principal en la programacin de objetos
es la clase, es como una plantilla del objeto.


La casa sali de un plano.

La clase es lo que define a un objeto.


Un objeto es una instancia de la clase, es la
creacin, es darle vida a una clase es lo que forma
el objeto, la clase ya construida es el objeto.
Instancias-Objetos
Una Instancia es una ocurrencia de la clase

Al momento de crear un objeto se produce la instanciacin

Un Objeto es una instancia de una Clase especfica

EJEMPLO:
Suponer que existe la clase Vehculo

El auto patente WF-4631 es una instancia de la clase Vehculo, o
sea, un objeto de esa clase

La camioneta patente ZT-9283 es otra instancia de la clase
Vehculo
Las clases y los objetos estn en todas partes
Vehculo
Animal
Figura
Clases

Tenemos tipos de datos enteros, booleanos
pero cuando creamos una clase estamos
definiendo un nuevo tipo de datos.

Deben tener una sola responsabilidad, solo
hago una sola cosa.
Todos los sustantivos tienden a ser clases
(atento no confundirlas con las propiedades)

Ejemplo:
Una persona camino por las escalera para
abrir la puerta

Objeto = persona, escalera, puerta
Mtodos = camin, abri
Un programa se encarga de procesar
informacin. El usuario se encarga de dos cosas
fundamentales:

- Los datos que se procesan (datos)
-Las operaciones que procesan esos datos
(funciones)

Podemos unir datos con operaciones

Las operaciones se aplican sobre unos datos,
ms exactamente, sobre unos tipos de datos.
Las clases

Las clases C++ permiten definir nuevos tipos de datos,
Cada clase es un nuevo tipo,
Cada elemento de la clase se caracteriza por ciertos
valores y las operaciones disponibles para crear dichos
elementos, modificarlos y destruirlos.
Un concepto se define en trminos de:

qu tiene? campos
qu hace? mtodos
39
Abstraccin
Concepto. Se define
como la capacidad para
examinar algo sin
preocuparse de sus
detalles internos.
Existen dos tipos de abstracciones: abstraccin
de datos y abstraccin funcional
Abstraccin de Datos
Consiste en utilizar los datos sin preocuparse
por los detalles de su implementacin, es
decir, lo importante es saber que tipo de
informacin se puede utilizar y no como est
almacenado
Que Atributo
Como Campo
Abstraccin funcional
Consiste en saber que es lo que hace un
determinado proceso, pero no como lo hace.
Por ejemplo el proceso Ordenar de la clase
Vector, sabemos que el mtodo ordenar los
elementos del vector, pero no nos interesa
como lo har.
Que mtodo
Como algoritmo
Encapsulamiento
Proceso por el que se ocultan:
Las estructuras de datos
Los detalles de la implementacin

Permite considerar a los objetos como "cajas negras", evitando que
otros objetos accedan a detalles que NO LES INTERESA

Una vez creada la clase, las funciones usuarias no requieren conocer
los detalles de su implementacin
Encapsulamiento
Toda clase tiene un conjunto de atributos y mtodos
asociados a ella

Todos ellos estn encapsulados o contenidos dentro de la
misma clase, de manera que son miembros de dicha clase

Esos mtodos y atributos pueden ser utilizados por otras
clases slo si la clase que los encapsula les brinda los
permisos necesarios para ello
Encapsulamiento
Atributos de una Cuenta Corriente:
Nmero
Saldo

Mtodos:
Depositar
Girar
Conocer el saldo

Cmo se almacenan estos datos?
Objetos
En la POO se dice que un objeto: "integra datos y algoritmos"
En la programacin estructurada, variables y funciones estn
separadas
Clase
Objeto
Instanciacin de objetos
Tipo
Variable
Declaracin de variables
POO
Procedural
Objetos
Cada objeto es responsable de inicializarse y
destruirse en forma correcta

Un objeto consta de:
Tiempo de vida
Estado
Comportamiento
Atributos
Mtodos
Tiempo de vida de un objeto
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

Los objetos dejan de existir cuando son
destruidos
Queda 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

Estado de un objeto
Queda definido por los mtodos

Los prototipos de los mtodos
definidos en la interfaz de una
clase permiten a otros objetos,
que forman parte de la aplicacin,
interactuar con los objetos de esa
clase

Comportamiento de un objeto
Mtodo
Es un 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.

Cmo se declara una funcin miembro
de la clase ? (menos los constructores y
destructores)
Tipo que devuelve nombre de la clase : :
nombre del mtodo (Lista de parmetros ) {
cuerpo de la funcin o mtodo
};
Los : : son conocidos como el alcance del
operador resolucin, lo que indica al
compilador donde comienza la funcin.
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, a la reaccin que
puede desencadenar un objeto, es decir la
accin que genera.

Datos
Mtodos
Mensajes
Objetos
Mensaje
Es una comunicacin dirigida a un objeto,
que le ordena que ejecute uno de sus
mtodos con ciertos parmetros asociados
al evento que lo gener.

Ejemplos
class class_name
{
id_acceso1: miembro1;
id_acceso2: miembro2;
...
};
class CRectangle
{
int w, h;
public:
CRectangle(int,int);
int area(void);
};
int CRectangle::area () {return (w*h);}
void CRectangle::CRectangle (int a, int b)
{ w = a; h = b;}
#include "Car.h"
CRectangle rect(3,4);
cout << "area: " << rect.area();
Crectangle.h
Crectangle.cpp
main.cpp
Conceptos POO: Tipo
Es el reforzamiento del concepto de clase
Objetos de tipo diferente no pueden ser
intercambiados
El C++ y el Java son lenguajes fuertemente
tipeados
Ayuda a corregir errores en tiempo de
compilacin
Mejor que en tiempo de ejecucin
98
Constructor
El constructor es un proceso que se encarga
de:
Reservar espacio de memoria para los datos del
objeto
Inicializar los atributos del objeto (darle un estado
inicial)
Tipos de Constructor:
Oficio, Copia, con Parmetros
100
Constructor de oficio
Inicializa los atributos con valores definidos
por el implementador de la clase.
Ej.
Fecha::Fecha()
{ d=1; m=1; a=2001;
}
101
Constructor de copia
Inicializa los atributos del objeto con los datos
provenientes de otro objeto de la misma
clase.
Ej.
Fecha::Fecha(const Fecha &f2)
{ d=f2.d;
m=f2.m;
a=f2.a;
}
Constructor con parmetros
Inicializa el objeto con datos provenientes de
los parmetros.
Ej.
Fecha::Fecha(byte dd, byte mm,Word aa)
{ SetFecha(dd, mm, aa);
}
Mtodos abstractos
Si la clase padre define un mtodo, la clase
hija puede usar ese mtodo sin necesidad de
redefinirlo

Si la clase padre no define un mtodo
(mtodo abstracto), la clase hija tiene que
definirlo obligatoriamente.
Vehculo
depsito
velocidad
acelerar
frenar
Vehculo
areo
queroseno
aterrizar
despegar
Vehculo
terrestre
gasolina Tren
vagones
Vagn
puertas
asientos
Vagn
pasajeros
puertas=2
asientos=20
Vagn
conductor
puertas=1
asientos=2
1..n
Coche


Avin
aterrizaje horizontal
despegue horizontal
Helicptero
aterrizaje vertical
despegue vertical
Herencia
La herencia consiste en el compartir atributos y
mtodos entre clases basndose en una
relacin jerrquica.
Una clase puede definirse ampliamente y
redefinirse sucesivamente en subclases ms
refinadas.
Cada subclase que se incorpora, hereda todas
las propiedades de su superclase y adiciona sus
propias y nicas propiedades.
Herencia
A veces, campos y mtodos son compartidos
por varias clases:
Acelerar es un mtodo compartido por coches y
trenes
Para simplificar el cdigo, se usa la herencia
Creamos una clase Vehiculo que tenga los
mtodos comunes a coche y tren
Creamos clases hijas que heredan de ella
Herencia
Vehculo
acelerar
frenar
depsito
velocidad
Coche
puertas
Tren
vagones
Avin
despegar
aterrizar
puertas
Herencia
Empleado
Sueldo
Cliente
Cuenta
Alumno
Carrera
Persona
Nombre
Direccin
RUT

Una clase puede heredar los atributos de dos o ms
clases. Para lograr esto, se utiliza una lista de herencia
separada mediante comas en la lista de clases base de
la clase derivada. La forma General es:
Class Nombre_clase_derivada : lista de clases base
{
.
.
.
};
Considere crear una clase MesaRedonda, que
no solo tenga las propiedades de las mesas, sino
tambin la caracterstica geomtrica de ser
redonda.
#include <stdio.h>
class Circle{
float radio;
public:
Circle(float r){ radio = r; }
Float Area(){ return radio*radio*3.1416; }
};
class Mesa{
float height;
public:
Mesa(float h) { height = h; }
float Height() { return height; }
};
class MesaRedonda:public Mesa, public Circle
{
int color;
public:
MesaRedonda(float h, float r, int c);
int Color() { return color; }
};
MesaRedonda::MesaRedonda(float h, float r, int c):
Circle(r),Mesa(h)
{
color = c;
}
MESA CIRCULO
MESA REDONDA
void main()
{
MesaRedonda Mesa1(15.0, 3.0, 5);
printf("\n Las propiedades de la Mesa son:");
printf("\n Altura = %f ", Mesa.Height());
printf("\n Area = %f ", Mesa.Area());
printf("\n Color = %d ", Mesa.Color());
}
126
POLIMORFISMO
Polimorfismo
Capacidad que permite a dos clases diferentes responder
de forma distinta a un mismo mensaje

Esto significa que dos clases que tengan un mtodo con el
mismo nombre y que respondan al mismo tipo de
mensaje (es decir, que reciban los mismo parmetros),
ejecutarn acciones distintas
Ejemplo 1:

Al presionar el acelerador esperamos que aumente la
velocidad del auto, independiente de si se tiene un:

Motor con carburador
Motor con inyeccin electrnica

Polimorfismo
OBJETOS
'A'
3
MENSAJE
Sucesor
RESULTADOS
'B'
4
Ejemplo 2:

Si se tienen las clases Entero y Char, ambas respondern de manera
distinta al mensaje "Sucesor"
Polimorfismo

Polimorfismo por Coercin: Es una operacin
semntica que convierte argumentos a los tipos
esperado por una funcin, en una situacin que
de otra forma resultara en un tipo de error. La
coercin puede estar dada estticamente,
insertndose automticamente entre argumentos
y funciones a tiempo de compilacin o pueden
tener que determinarse dinmicamente, con
pruebas a tiempos de ejecucin sobre los
argumentos.

CLASES AMIGAS (Palabra reservada friend)
A veces se necesitan 2 clases que son
tan conceptualmente cercanas que usted
deseara que una de ellas tuviera acceso
irrestricto a los miembros de la otra.
Ejercicios
Y
Ejemplos
Ejemplo: mi Coche
Un coche desde la filosofa OO
Qu tiene?
Fsico: puertas, motor, depsito
Abstracto: velocidad, aceleracin, consumo
Estado:
parado con una puerta abierta
a 120 Km/h con el depsito medio lleno
Qu hace?
Acelerar, abrir/cerrar puertas, repostar
Ejercicio 1
Crear una clase coche que tenga los siguientes
campos:
Matrcula, marca y modelo (pblicos)
Velocidad, velocidad mxima y aceleracin
Nmero de puertas
Generar los constructores y destructores
Crear un constructor que inicie los parmetros
Instanciar un objeto de la clase y mostrar por
pantalla sus atributos pblicos
Ejercicio 2
Controlar el estado de las puertas
Crear mtodos para abrir y cerrar puertas
Almacenar el estado de las puertas
(abiertas/cerradas)

Pistas:
usar array de bool (true=abierto)
usar constantes enteras para identificar las
puertas (MALETERO=0, DETRAS_IZQ=1, etc)


Ejercicio 3
Implementar el movimiento del coche:
Acelerar
Entrada: tiempo durante el que acelera
Efecto: v=min(at, vmax)
Frenar: anlogo a la aceleracin
Considerar que una vez en movimiento se
mantiene a velocidad constante
Comprobar que no acelere si hay puertas
abiertas

Ejercicio 4
Implementar el consumo del coche:
Aadir campos:
deposito y depositoMax
consumo (litros por kilmetro)
cuentaKilometros
Aadir mtodo repostar(float litros)
Aadir mtodo crucero(int segundos) que modifique:
depsito, cuentaKilometros
d=vt
Comprobar que funciona correctamente
repostar 20 litros
acelerar 10s
crucero 1000s
frenar 10s

0 = Negro
1= Azul
2= Verde
3= Aguamarina
4= Rojo
5= Prpura
6= Amarillo
7= Blanco
8= Gris
9= Azul Claro
A= Verde Claro
B= Aguamarina Claro
C= Rojo Claro
D= Prpura Claro
E= Amarillo Claro
F= Blanco Brillante
Por Ejemplo si queremos que a la hora de ejecutar un cdigo de programa con
fondo de color azul y texto de color rojo, ingresamos:

system(color 14);Q|

Você também pode gostar