LOGO
[Link]
I. Historia de la Programacin
II. Paradigma de programacin
III. HISTORIA POO IV. LA PROGRAMACION
ORIENTADA A OBJETOS
V. ELEMENTOS : CLASES
VI. ELEMENTOS : OBJETO VII. CARACTERISTICAS DE LA POO (OOP) VIII. LENGUAJES ORIENTADOS A OBJETOS
I. Historia de la Programacin
Evolucin
Cdigo Binario
Cdigo Mquina. Ensamblador Lenguajes Procedimentales
Tipos de paradigmas de programacin ms comunes.
Imperativo o por procedimientos (SMALL ejemplo, por C, BASIC o Pascal)
Funcional
Scheme o Haskell - declarativo
Lgico Prolog- declarativo
Declarativo combinacin
Orientado a objetos Smalltalk
HISTORIA
AOS 60 y 70 del s. XX Centro de Cmputo Noruego en Oslo (SIMULADORES DE VUELO) Simula 67 que fue el primer lenguaje orientado a objetos.
LA PROGRAMACION ORIENTADA A OBJETOS
La programacin orientada a objetos (POO u OOP, por las siglas inglesas de Object- Oriented Programming).
Un sistema se califica como Orientado a Objetos cuando rene las caractersticas de: abstraccin, encapsulacin, herencia y polimorfismo
LA PROGRAMACION ORIENTADA A OBJETOS
Conceptos bsicos que las informan: objetos, mensajes, clases, instancias y mtodos. La idea bsica es agrupar los datos y los procedimientos para manejarlos en una nica entidad: el objeto.
CLASES OBJETOS
INSTANCIAS MENSAJES
EVENTOS
CLASE
Se trata de realizar una abstraccin denominada clase, esta permite la agrupacin de objetos que comparten las mismas propiedades y comportamiento. No se debe olvidar que la clase es una generalizacin de objeto.
CLASE
CLASE : EJEMPLO
Una clase es la definicin de un tipo de objetos. De esta manera, una clase "Empleado" representara todos los empleados de una empresa, mientras que un objeto de esa clase (tambin denominado instancia) representara a uno de esos empleados en particular.
CADA CLASE ESTA COMPUESTA POR:
Atributos: definen el estado de la clase.
atributos pasivos. variables miembros. campos.
En C++ es posible definir:
Variables o atributos de clase Variables o atributos de objeto o de
instancia
CADA CLASE ESTA COMPUESTA POR:
Mtodos:
definen el comportamiento de la clase. funciones miembros. atributos activos. Operaciones. Comportamiento. responsabilidades.
OBJETO
Un objeto es una unidad que contiene datos y funciones. Un objeto es un ente o concepto, real o abstracto que pertenece a una coleccin o clase, el objeto se instancia con un evento de creacin.
OBJETO
ESTADO
COMPORTAMIENTO
IDENTIDAD
Un objeto tiene estado, comportamiento e identidad.
Tiene datos internos que le dan el estado. Tiene mtodos para producir comportamiento. Cada objeto tiene una direccin nica en memoria lo que le da identidad.
El estado (ATRIBUTO)
El estado est compuesto de datos, sern uno o varios atributos a los que se habrn asignado unos valores concretos (datos).
Estado = Atributos = Datos miembro
El Comportamiento (METODO)
El comportamiento de un objeto es la forma en que acta y reacciona, en trminos de sus cambios de estado e intercambio de mensajes con otros objetos.
El comportamiento de un objeto est determinado por las operaciones que pueden ser invocadas sobre el mismo.
La Identidad
La identidad es una propiedad de un objeto que lo diferencia del resto, dicho con otras palabras, es su identificador (concepto anlogo al de identificador de una variable o una constante).
EJEMPLO
EJEMPLO 2
ABSTRACCION ENCAPSULAMIENTO
OCULTAMIENTO POLIMORFISMO
HERENCIA
ABSTRACCION
Al empaquetamiento de las variables de un objeto con la proteccin de sus mtodos se le llama encapsulamiento.
Es el mecanismo de diseo en la POO. Nos permite extraer de un conjunto de entidades datos y comportamientos comunes para almacenarlos en clases.
Existen dos tipos de abstracciones
Abstraccin de Datos
Abstraccin funcional
Year
ENCAPSULAMIENTO
El encapsulamiento consiste en unir en la Clase las caractersticas y comportamientos, esto es, las variables y mtodos.
Es tener todo esto en una sola entidad. En los lenguajes estructurados esto era imposible. Es evidente que el encapsulamiento se logra gracias a la abstraccin y el ocultamiento.
La encapsulacin da lugar a que las clases se dividan en dos partes
Interfaz: Captura la visin externa de una clase, abarcando la abstraccin del comportamiento comn a los ejemplos de esa clase. Implementacin: Comprende la representacin de la abstraccin, as como los mecanismos que conducen al comportamiento deseado.
OCULTAMIENTO
Cada objeto est aislado del exterior, es un mdulo natural, y cada tipo de objeto expone una interfaz a otros objetos que especifica cmo pueden interactuar con los objetos de la clase.
OCULTAMIENTO
El aislamiento protege a las propiedades de un objeto contra su modificacin por quien no tenga derecho a acceder a ellas, solamente los propios mtodos internos del objeto pueden acceder a su estado.
Visibilidad de los lenguajes de programacin
Privado: Solo los miembros de la clase tienen acceso Protegido:
Solo los miembros de la clase y sus derivados tienen acceso
Pblico: Todos tienen acceso
POLIMORFISMO
Es la cualidad de tener ms de una forma. En el aspecto de la programacin orientada a objetos el polimorfismo se refiere que una misma operacin puede tener diferente comportamiento en diferentes objetos. En otras palabras diferentes objetos reaccionan al mismo mensaje de modo diferente.
HERENCIA
Es el mecanismo que nos permite crear clases derivadas (especializacin) a partir de clases bases (generalizacin).
HERENCIA
La herencia organiza y facilita el polimorfismo y el encapsulamiento permitiendo a los objetos ser definidos y creados como tipos especializados de objetos preexistentes.
Estos pueden compartir (y extender) su comportamiento sin tener que volver a implementarlo. Esto suele hacerse habitualmente agrupando los objetos en clases y estas en rboles o enrejados que reflejan un comportamiento comn.
Tipos de herencia
HERENCIA SIMPLE
Es aquella en la que cada clase derivada hereda una nica clase; herencia simple se refiere adems de que cada clase tiene un solo antecesor, pero cada clase base puede tener muchos descendientes.
Tipos de herencia
HERENCIA MLTIPLE
Es aquella en la cual una clase derivada Clicktiene ms de una clase base. to
add Title
Constructor Destructor
Otros dos conceptos muy importantes en la POO son relativos a la creacin y destruccin de objetos.
La clase tiene dos funciones miembro especiales denominadas:
Constructor - Destructor.
Constructor
Funcin miembro que es automticamente invocada cada vez que se define un objeto, su objetivo es la inicializacin del mismo. Toma el mismo nombre que la clase, puede recibir parmetros y podemos tener varios constructores definidos.
Destructor
Funcin miembro invocada automticamente cada vez que se destruye un objeto. Su objetivo es realizar operaciones como liberacin de memoria, cerrar ficheros abiertos,etc. Toma el mismo nombre de la clase comenzado primero por el carcter "~", no toma parmetros y no admite la sobrecarga (slo puede existir uno en cada clase).
LENGUAJES ORIENTADOS A OBJETOS
Simula (1967) Smalltalk (1980) C++ (1983, 1990) Object Pascal (1988) Lisp CLOS (1989) Java (1995, 1997, 1998...)
CLASES EN C++
Se definen unos atributos y unos mtodos. Entre los mtodos se pueden incluir mtodos constructores y la destructora. Adems de eso se puede definir si los atributos y clases son publicas, protegidas y privadas, dependiendo del nivel de encapsulacion que le queramos dar a la clase.
La representacin del objeto coche en una clase c++:
CLASES EN C++
/** * [Link] * Clase cabecera que define el objeto Coche * * Pello Xabier Altadill Izura * * No se compila.
*/
using namespace std; #include <iostream> class Coche { public: Coche(); Coche(char *m,int cil,int cab); ~Coche(); void arranca(); void detiene(); void acelera(); private: char *marca;
int cilindrada; int caballos; };
CLASES EN C++
fichero de implementacin (se puede tener todo en un nico fichero)
/** * [Link] * Fichero que implementa la cabecera de la clase Coche. * NO HACE NADA CONCRETO solo es una muestra * * Pello Xabier Altadill Izura *
* Compilar usando: g++ -c [Link] */ // Hay que incluir el fichero de cabecera #include "[Link]" // Implementacion de constructor Coche::Coche() {
cout << "Coche creado." << endl;
} // Implementacion de constructor (con SOBRECARGA) Coche::Coche (char *m,int cil,int cab) {} // Implementacion de destructor. Util para liberar memoria. Coche::~Coche() { cout << "Coche destruido." << endl; }
CLASES EN C++
// implementaciones de metodos... void Coche::arranca() {} void Coche::detiene() {} void Coche::acelera() {}
/** * Podemos usar una clase main para hacer testeos con la clase * NOTA IMPORTANTE * Atencion : al usar esta clase en otra que ya tiene funcion * main, no se puede tener otra main. */ //int main () { //cout << "Lo hise!!\n" << endl; //return 1; //}
LOGO
[Link]