Sie sind auf Seite 1von 28

Universidad Centroccidental Lisandro Alvarado Decanato de Ciencias y Tecnologa Anlisis de Sistemas Departamento de Sistemas Programacin

Programacin Orientada a Objetos

Coordinacin del rea de Programacin

Lapso 2012-1

Programacin Orientadas a Objetos


Agenda Programacin de Funciones Programacin Orientada a Objetos (POO) Pilares de la Programacin Orientada a Objetos Definicin de Objeto Definicin de Clase Representacin de una Clase

Programacin de Funciones
Funcin
Contiene una o ms sentencias y se crean generalmente para realizar una nica tarea. En la Programacin Orientada a Objetos, las funciones se utilizan para definir los mtodos de las clases. Implementacin de una Funcin:

tipo_de_retorno NombreFuncion (lista parmetros){ sentencias return valor; }

Programacin de Funciones
Parmetros de una Funcin
Se conocen como Argumentos. Una funcin puede utilizar parmetros por valor y parmetros por referencia, o puede no tener parmetros.

Parmetros por valor


En C++ el paso por valor significa que al compilar la funcin y el cdigo que llama a la funcin, sta recibe una copia de los valores de los parmetros que se le pasan como argumentos.

Parmetros por Referencia (&)


Cuando una funcin debe modificar el valor del parmetro pasado. En este mtodo el compilador pasa la direccin de memoria del valor del parmetro a la funcin. Cuando se modifica el valor del parmetro esta queda almacenado en la misma direccin de memoria.

Programacin de Funciones
Parmetros de una Funcin segn Ubicacin
Parmetros Formales Estn en la definicin de la funcin (cabecera).
Regla Compatibilidad

Parmetros Actuales Estn en cada llamada a una funcin.


Debe cumplir con lo siguiente

COMPATIBILIDAD ENTRE PARMETROS FORMALES Y PARMETROS ACTUALES

Misma cantidad

Mismo tipo

Para N parmetros formales deben haber N parmetros actuales. Ej: si hay 3 parmetros en los formales, deben haber 3 en los actuales Deben ser parmetros del mismo tipo. Ej: Si en los formales hay un char y un int, igualmente deben haber un char y un int en los actuales Deben estar en el mismo orden. Ej: si en los formales hay un char y un int, y en los actuales hay un int y un char, ambos pares de parmetros tienen el mismo tipo pero no estn en el mismo orden.

Mismo orden

Programacin de Funciones
Ejemplos de Funciones
void ImprimirMensaje (string mensaje) { cout << mensaje << endl; } Llamado de la funcin ImprimirMensaje ImprimirMensaje (Ingrese los siguientes datos:);
void LimpiarPantalla () { system (cls); } void DetenerPantalla () { system (pause); } Llamado de las funciones anteriores LimpiarPantalla (); DetenerPantalla ();

void intercambio(int& m, int& n) { int i=3, j =50; int aux=m; cout<< i = << i << y j = << j << endl; m= n; n= aux; intercambio (&i, &j); } cout<< i = << i << y j = << j << endl;

Programacin Orientada a Objetos


Es un paradigma de programacin que usa objetos y sus interacciones, para disear aplicaciones y programas de computadora.

Es una forma especial de programar, ms cercana a como expresaramos las cosas en la vida real.

Se basa en la idea natural de la existencia de un mundo lleno de objetos, de modo que la resolucin del problema se realiza en trminos de objetos.

Programacin Orientada a Objetos


Pilares Fundamentales de la POO

Programacin Orientada a Objetos


Abstraccin
Consiste en captar las caractersticas esenciales de un objeto, as como su comportamiento, al mismo tiempo que se ignoran los detalles no esenciales. En programacin, el trmino se refiere al nfasis en el "qu hace?" ms que en el "cmo lo hace?" (Caracterstica de caja negra).
i) El proceso para calcular el promedio de 3 nmeros puede explicarse as: sumamos los nmeros y dividimos entre 3. ii) Cuando vamos a programarlo, tenemos que: a- Declarar variables, b- mostrar un mensaje en pantalla para pedir cada nmero, c- leer los nmeros, d- asignarlos la suma a una variable Total, e- Dividir el total entre 3 y asignarlo a la variable Promedio, f- Mostrar un mensaje en pantalla indicando que se presentar el resultado, gMostrar la variable Promedio. iii) Puedes ver cmo el punto (i) ignora una serie de pasos y se concentra en el proceso mismo? iv) El punto (ii) es ms bien el cmo se hace, mientras el punto (i) es el qu hace

Programacin Orientada a Objetos


Encapsulamiento
Es una propiedad que ayuda a mantener juntos, en una nica entidad, los atributos o propiedades (datos) y las funciones (mtodos) que definen el comportamiento del objeto.
La mejor forma de comprender el encapsulamiento es imaginar que todo objeto tiene un nmero determinado de acciones o comportamientos, cada uno de los cuales se activa pulsando un botn. Cada botn le enva el mensaje al objeto para que procese y cambie sus atributos dentro de su caja negra. Ms adelante en este curso veremos cmo para cada requerimiento de un objeto tendremos que programarle un botn; finalmente, usar el objeto (correr el programa) consistir en pisar los botones necesarios.

Programacin Orientada a Objetos


Herencia
Es una propiedad que permite que los objetos sean creados a partir de otros ya existentes, obteniendo caractersticas (mtodos y atributos) similares a los ya existentes.
Jerarqua de clases de transportes

Programacin Orientada a Objetos


Polimorfismo
Consiste en la posibilidad de definir en una jerarqua de clases mtodos y/o atributos denominados de forma idntica, pero que se comportan de manera distinta.
DEMOSTRACIN
DE UN CASO DE POLIMORFISMO

Clase Persona
Nombre Cdula BsEfectivo BsDebe TotalCapital TotalDeudas TotalPatrimonio

LA CLASE BASE Persona con sus componentes (Propiedades: Nombre, Cedula, BsEfectivo, BsDebe, Comportamiento: clculos de Totales) ASUMIREMOS de la manera ms elemental, que el TotalCapital de cualquier persona es el dinero en efectivo que tiene, y TotalDeudas es lo que debe en efectivo; as, TotalPatrimonio es la diferencia entre los totales anteriores CON ESTAS FLECHAS queremos denotar que hay una herencia entre las clases sealadas UN PROFESOR es una persona; componentes adicionales: ValorCarro y ValorCasa

UN ESTUDIANTE es una persona; componentes adicionales: ValorCelular y ValorComputador

EL TOTALCAPITAL para las clases derivadas tendr algunas variantes

Clase Estudiante
- ValorComputador - ValorCelular - TotalCapital

PARA CADA CLASE DERIVADA tambin cuenta BsEnBanco PARA ESTUDIANTE hay que sumarle Computador y Celular PARA PROFESOR hay que sumarle Carro y Casa

Clase Profesor
- ValorCarro - ValorCasa - TotalCapital

Programacin Orientada a Objetos


Qu es un Objeto?
Todo objeto del mundo real tiene 2 componentes: caractersticas (atributos) y comportamiento (mtodos).

Segn Booch
Es algo que tiene estado, un comportamiento y una identidad.

Programacin Orientada a Objetos


Qu es un Clase?
Es la descripcin de un conjunto de objetos; consta de mtodos y atributos (datos) que resumen caractersticas comunes de un conjunto de objetos. Cuando programamos un objeto y definimos sus caractersticas y funcionalidades en realidad lo que estamos haciendo es programando una clase.

Programacin Orientada a Objetos


Elementos de una Clase
Propiedades o atributos
Son las caractersticas de los objetos. Cuando definimos una propiedad normalmente especificamos su nombre y su tipo. Nos podemos hacer a la idea de que las propiedades son algo as como variables donde almacenamos datos relacionados con los objetos.

Mtodos
Son las funcionalidades asociadas a los objetos, es decir, describen el comportamiento asociado a un objeto. Las funciones (mtodos) residen en el objeto y determinan como actuar ste cuando reciba un mensaje.

Programacin Orientada a Objetos


Representacin de una Clase
REPRESENTACIN NOMBRE
DEL OBJETO DE UNA CLASE SEGN LA NOTACIN

UML

FECHA
- dia : int - mes : int - anno : int + + + + + + + + Fecha () Fecha (d:int, m:int, a:int) SetDia (d:int) SetMes (d:int) SetAnno (d:int) GetDia () :int GetMes () :int GetAnno () :int
ATRIBUTOS

PRIVADO (-)

PBLICO (+)

OPERACIONES (MTODOS)

PROTEGIDO (#)

Identificacin de Objetos
Una tcnica a seguir para lograr la identificacin de los objetos es subrayar cada sustantivo (nombre) presente en el planteamiento del problema. Ejemplo: En una organizacin laboran varios trabajadores que tienen un sueldo base, asignaciones y deducciones. Se desea determinar el sueldo neto de cada trabajador.
IDENTIFICACIN
OBJETOS CANDIDATOS: organizacin, trabajadores, trabajador, empresa
DE OBJETOS Y SUS COMPONENTES

INFORMACIN DE ENTRADA: sueldo base, asignaciones, deducciones

En una organizacin laboran varios trabajadores que tienen un sueldo base, asignaciones y deducciones. Se desea determinar el sueldo neto de cada trabajador y el total a pagar por la empresa.
REQUERIMIENTOS: determinar el sueldo neto de cada trabajador IMPORTANTE: en ocasiones la informacin de entrada est implcita

Ejemplificacin de Requerimientos
IDENTIFICACIN
DE OBJETOS Y MIEMBROS POR EJEMPLIFICACIN TABULADA

TODA LA TABLA representa la informacin del objeto Organizacin CADA REGISTRO muestra la informacin de un objeto trabajador

LOS DATOS DE ENTRADA por columnas sern atributos del trabajador

CLCULOS POR REGISTRO sern mtodos del trabajador

DATOS GENERALES DE ENTRADA seran atributos de la organizacin. Para este ejemplo, podra ser el total que dispone la empresa para pagar sueldos. As, si se pide el restante luego del pago, tendramos otro mtodo para organizacin: TOTALRESTANTE.

CLCULOS TOTALES DE LA TABLA sern mtodos de la organizacin

Diseo UML de las Clases


DIAGRAMA DE CLASES (INCOMPLETO DEL EJERCICIO DE LAO RGANIZACIN )

Organizacin - totPagarOrg : float - bsDisponeParaSueldos : float + SetBsDisponeParaSueldos (Bs : float) + GetBsDisponeParaSueldos () : float +ProcesarTrab (Nomb...) : void + DetTotPagarOrg () : float ::::::::::::

El diagrama de clases muestra todas las clases que participan en la solucin del problema y las relaciones entre ellas.

Trabajador - nombre : string - sueldoBase : float - asignaciones : float - deducciones : float +Sets... +Gets... +CalcularSueldoNeto () : float ::::::::::::

Objetos C++
Un Programa Orientado a Objetos en C++, est compuesto por: Varias libreras de uso genrico, bien sea incorporadas al lenguaje o programadas por el usuario. Una carpeta en el disco duro (o pendrive) con el nombre del proyecto.

Clases propias para el programa. Cada clase se almacena en 2 archivos: uno para la interfaz (extensin .h) y otro para la implementacin (extensin .cpp). Estos archivos van dentro de la carpeta del proyecto
Cada clase que se disea tendr 2 partes: La interfaz: contiene solamente la declaracin de los componentes de la clase, siguiendo la sintaxis de C++. La implementacin: contiene la programacin de los mtodos de la clase

Nuestro ejemplo de la organizacin requerir al menos 5 archivos: Organizacin.h, Organizacin.cpp, Trabajador.h, Trabajador.cpp y Principal.cpp

Objetos C++: Implementacin


#include "trabajador.h trabajador :: trabajador (){ sueldo_base = asignaciones = deducciones = 0; } trabajador :: trabajador (float sb, float a, float d){ sue_bas = sb; asign = a; deduc = d; } void trabajador :: SetSue_bas (float sb){ sue_bas = sb; } void trabajador :: SetAsign(float a){ asign = a; } void trabajador :: SetDeduc(float d){ deduc = d; } float trabajador :: GetSue_bas (){ return sue_bas ; } float trabajador :: GetAsig(){ return asign ; } float trabajador :: GetDeduc(){ return deduc ; } float trabajador :: DetSueldoNeto () { return sue_bas + asign - deduc ; } #ifndef TRABAJADOR_H #define TRABAJADOR_H #include <string> using namespace std; class trabajador { private: string nombre; float sue_bas, asign, deduc; public: // Este es el constructor predeterminado Trabajador (); // Este es el constructor de inicializacin Trabajador (string, float, float, float); void SetNombre(string); void SetSue_bas(float); void SetAsig (float); void SetDeduc (float); string GetNombre(); float GetSue_bas (); float GetAsign (); float GetDeduc (); float DetSueldoNeto (); }; #endif

Trabajador.h

Trabajador.cpp

Objetos C++: Implementacin


#ifndef ORGANIZACION_H #define ORGANIZACION_H #include "Trabajador.h" class Organizacion { private: float bsdispone; float totpagarorg; public: Organizacion (float); void ProcesarTrab (float, float, float); float DetTotPagarOrg (); bool DetAlcanzaBs (); float DetSaldoResto (); }; #endif void Organizacion :: ProcesarTrab (float s, float a, float d){ trabajador t (s, a, d); totpagarorg += t.DetSueldoNeto (); } float Organizacion :: DetTotPagarOrg (){ return totpagarorg; } bool Organizacion :: DetAlcanzaBs (){ return bsdispone - totpagarorg > 0; } float Organizacion :: DetSaldoResto (){ return bsdispone - totpagarorg; } #include "Organizacion.h" Organizacion :: Organizacion (float BsD){ bsdispone = BsD; totpagarorg = 0; }

Organizacion.h

Organizacion.cpp

Objetos C++: Implementacin


#include <iostream> #include <cstdlib> #include "Organizacion.h" using namespace std; int main () { float bs, sueldo, asig, deduc; char resp; cout << "Monto dispone la empresa para nomina: "; cin >> bs; Organizacion org (bs); do { cout << "Introduzca sueldo base: "; cin >> sueldo; cout << "Introduzca asignaciones: "; cin >> asig; cout << "Introduzca deducciones: "; cin >> deduc; org.ProcesarTrab (sueldo, asig, deduc); cout << "Hay otro trabajador? S-N: "; cin >> resp; } while (resp == 'S' or resp == 's'); cout << "El total a pagar por nomina es: " << org.DetTotPagarOrg () << "\n"; if (org.DetAlcanzaBs ()) cout << "El dinero alcanza para pagar nomina \n"; else cout << "El dinero no alcanza para pagar nomina \n"; cout << "El saldo restante luego de nomina es: " << org.DetSaldoResto() << "\n"; system("PAUSE"); return 0; }

Principal.cpp

Objetos C++: Constructores


Es un mtodo especial que se ejecuta automticamente al momento de la creacin de un objeto; su propsito es la inicializacin de los atributos del objeto, bien sea con valores predefinidos o con valores que se pasan al objeto a travs de parmetros.

Consideraciones
Se denominan exactamente igual que la clase. Pueden haber varios constructores en una clase, con la diferenciacin entre ellos de los argumentos que reciben (sobrecarga de mtodos). Para efectos de este curso, principalmente se usarn 2 constructores: (valores predeterminados, y otro que recibe los argumentos de inicializacin). En la interfaz de la clase, solamente colocars al encabezado. En la implementacin, entonces declaras la implementacin. En caso de que sea un constructor de inicializacin predeterminada, colocars valores base.

Objetos C++: Setters y Getters


La funcin Set es un mtodo que nos permite modificar el valor (asignar) de una variable privada (atributo) de una clase. La funcin Get es un mtodo que nos permite visualizar el valor de una variable privada (atributo) de una clase, en otras palabras provee el valor del atributo a quien lo solicite.

Consideraciones
Por cada atributo debera existir un Set y un Get. Con frecuencia podrs solamente implementar los Sets y Gets de los atributos que necesites para resolver el problema que se te plantea. Queda a discrecin del profesor si te permite esto. Los Sets constituyen un mtodo cuya nica funcin ser asignarle un valor a un atributo en particular, el cual viene por parmetro. Dado que no tiene que retornar valor, los Sets son procedimientos, o funciones void. Los Gets son mtodos que se invocarn para que retornen el valor de una atributo en particular, de manera que el tipo de retorno de cada Get depender del tipo del atributo que retorna.

Objetos C++: Implementacin


#include "trabajador.h trabajador :: trabajador (){ sueldo_base = asignaciones = deducciones = 0; } trabajador :: trabajador (float sb, float a, float d){ sue_bas = sb; asign = a; deduc = d; } void trabajador :: SetSue_bas (float sb){ sue_bas = sb; } void trabajador :: SetAsign(float a){ asign = a; } void trabajador :: SetDeduc(float d){ deduc = d; } float trabajador :: GetSue_bas (){ return sue_bas ; } float trabajador :: GetAsig(){ return asign ; } float trabajador :: GetDeduc(){ return deduc ; } float trabajador :: DetSueldoNeto () { return sue_bas + asign - deduc ; } #ifndef TRABAJADOR_H #define TRABAJADOR_H #include <string> using namespace std; class trabajador { private: string nombre; float sue_bas, asign, deduc; public: // Este es el constructor predeterminado Trabajador (); // Este es el constructor de inicializacin Trabajador (string, float, float, float); void SetNombre(string); void SetSue_bas(float); void SetAsig (float); void SetDeduc (float); string GetNombre(); float GetSue_bas (); float GetAsign (); float GetDeduc (); float DetSueldoNeto (); }; #endif

Trabajador.h

Trabajador.cpp

Metodologa de Desarrollo
EJEMPLO 1 Planteamiento del problema
DE APLICACIN DE METODOLOGA

Programar con POO: Dado el saldo actual de una cuenta bancaria, el tipo de una nueva operacin que se realiz y el monto de la misma, determinar el nuevo saldo de la cuenta.
1- Comprende: resalta las entidades que participan y los datos que te dan; la clase final est subrayada

Dado el saldo actual de una cuenta bancaria, el tipo de una nueva operacin que se realiz y el monto de la misma, determinar el nuevo saldo de la cuenta.
2- Ejemplo: Este proceso de anlisis te llevar a la solucin final. El cliente puede decirte rpidamente si vas bien. 2- Abstraccin: Este razonamiento es una excelente abstraccin del problema Los nombres de variables (en parntesis) puedes idearlos una vez aprobado el ejemplo 3- Clases: Observa que los componentes vienen desde el ejemplo: con el nombre que ideaste!... si es dato de entrada, ser atributo, los clculos son mtodos...

Si tengo 2000 Bs en el banco (saldo_actual) Las operaciones??? Retiro depsito (tipo_op) Ok!, si deposito 1000... (monto) Entonces tendr 3000 Bs (nvo_saldo) Pero si retiro 1500 (monto)... me quedan 500 Bs Ta fcil: al saldo actual le sumo si es deposito o le resto si es retiro (DetNvoSaldo)
CtaBanco saldo_actual : float tipo_op : char monto : float DetNvoSaldo () : float Recuerda que todos los mtodos llevan parntesis as no tengan argumentos.

Asignaciones Prxima Clase


Repasar lo visto en Clase.

Leer la Gua Didctica de Introduccin a la Programacin Orientada a Objetos (POO).


Realizar Ejercicios Propuestos.

Das könnte Ihnen auch gefallen