Tema #1 Programación Orientada a Objetos



Descargar 23 Kb.
Fecha de conversión24.03.2017
Tamaño23 Kb.

Tema #1 Programación Orientada a Objetos

  • Universidad Autónoma
  • Gabriel René Moreno
  • Elaborado por: Ing. Juan Carlos Contreras Villegas

Objetivos

  • Los objetivos del presente tema son:
    • Conocer los conceptos la programación orientada a objetos
    • Utilizar la notación de UML para la representación de los diagramas de clases.
    • Implementar los conceptos realizando pequeños programas demo C++

Características

  • Esta basado en Objetos, se modela y se piensa en los Objetos y lo que estos pueden hacer, o lo que se puede hacer con estos.
  • Se pueden construir fácilmente nuevas aplicaciones sin mucho esfuerzo
  • La Herencia puede ser una herramienta muy útil en OOP, y al mismo tiempo puede ser FATAL.

P.O.O. - Lenguajes

  • Ada
  • Modula
  • Smalltalk (Alan Kay)
  • Java (Sun Microsystems)
  • Eiffel
  • C++
  • Object Pascal
  • C#

Conceptos

  • Clases & Objetos
  • Atributos y Métodos
  • Encapsulamiento
  • Herencia
  • Polimorfismo
  • Generalización, Asociación, Agregación

Abstracción

  • Concepto. Se define como la capacidad para examinar algo sin preocuparse de sus detalles internos.
  • Existen dos tipos de abstracciones: abstracción de datos y abstracción funcional

Abstracción de Datos

  • Consiste en utilizar los datos sin preocuparse por los detalles de su implementación, es decir, lo importante es saber que tipo de información se puede utilizar y no como está almacenado
  • Que Atributo
  • Como Campo

Abstracción 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 método ordenará los elementos del vector, pero no nos interesa como lo hará.
  • Que  método
  • Como  algoritmo

Encapsulamiento

  • Consiste en reunir varias cosas para ser manipuladas como una sola unidad.
  • Por ejemplo al definir variables de tipo Registro estamos encapsulando los campos del registro.
  • Al definir una clase estamos encapsulando los atributos y los métodos.

Abstracción y Encapsulamiento

  • La abstracción y el encapsulamiento son conceptos complementarios
  • La abstracción se enfoca a la vista exterior de un objeto
  • El encapsulamiento previene a otros objetos ver su interior, donde el comportamiento de la abstracción se ha realizado.

Ocultamiento

  • Consiste en no permitir el acceso a los componentes de una clases (atributos, métodos)
  • Esto se logra con la visibilidad que ofrecen los lenguajes de programación.
  • Privado: Solo los miembros de la clase tienen acceso
  • Protegido: Solo los miembros de la clase y sus derivados tienen acceso
  • Público: Todos tienen acceso

Modularidad

  • Este concepto ya viene desde la programación modular, y se refiere al hecho de realizar un programa por partes, a las cuales se las denomina módulos.
  • Un módulo es un archivo que contiene un conjunto de declaraciones y/o procesos. En OOP normalmente un módulo contiene la interfaz y la implementación de un o más clases relacionadas.

CLASE

CLASE

  • Una clase representa a un conjunto de objetos que comparten una estructura y un comportamiento comunes.
  • La estructura de un objeto se define en su clase, por lo que un objeto es en realidad la instancia de una clase.

CLASE

  • Llacua – Vasquez
  • “Es una entidad que tiene Atributos(datos) y Procesos(métodos) inherentes al propósito y funcionamiento de la misma. Los atributos identifican las características de la clase y los procesos establecen su comportamiento”

CLASE

  • Luis Joyanes Aguilar
  • “Una Clase es un tipo definido por el usuario(programador) que determina las estructuras de datos y las operaciones asociadas con este tipo”
  • “La Clase es simplemente un modelo que se utiliza para describir uno o más objetos del mismo tipo”

OBJETO

  • Un objeto es una abstracción de una entidad del mundo real.
  • Toda interacción con el mundo externo es por medio de una interfase.

OBJETO

  • Un objeto tiene:
  • Un estado
  • Un comporta-miento bien definido
  • Una identidad única

Estado

  • El estado de un objeto se compone de todas las propiedades de un objeto (estáticas)
  • Y los valores asociados a ellas (dinámicos).
  • Estos valores pueden ser:
    • Simples
    • O denotar a otro objeto.
  • Estado = Atributos = Datos miembro

ATRIBUTOS

  • Concepto: Características que definen a la clase, es lo que el usuario (de la clase) puede ver. Es la abstracción.
  • Otro concepto: variables que están dentro de los objetos y que contienen los valores del objeto.
  • También son llamados: propiedades, datos miembro.

ATRIBUTOS – Ejemplo1

  • Una Fracción está definido por un par de números naturales, los cuales se denominan el numerador y denominador.
  • Fraccion
  • Numerador
  • Denominador
  • num_
  • den

ATRIBUTOS – Ejemplo2

  • Un Fecha está definido por tres datos: día, mes y año.
  • Fecha
  • Día
  • Mes
  • Año
  • 15/ 12/ 2005

Comportamiento

  • El comportamiento de un objeto es la forma en que actúa y reacciona, en términos 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.
  • Los tres tipos de operaciones más comunes son:

MÉTODOS

  • Concepto: Son las operaciones que se pueden realizar con los objetos de la clase.
  • Otro concepto: Son los procesos (funciones o procedimientos) que permiten trabajar con los datos de los objetos
  • También son llamados: funciones miembro
  • De acuerdo al trabajo que realizan los métodos, estos se clasifican en:Constructores,destructores, ponedores, selectores.

Tipos de Métodos

  • Constructores
  • Destructores
  • Modificadores
  • Selectores
  • Iteradores

Constructor

  • El constructor es un proceso que se encarga de:
  • Tipos de Constructor:
    • Oficio, Copia, con Parámetros

Constructor de oficio

  • Inicializa los atributos con valores definidos por el implementador de la clase.
  • Ej.
  • Fecha::Fecha()
  • { d=1; m=1; a=2001;
  • }

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 parámetros

  • Inicializa el objeto con datos provenientes de los parámetros.
  • Ej.
  • Fecha::Fecha(byte dd, byte mm,Word aa)
  • { SetFecha(dd, mm, aa);
  • }

Destructor

  • Liberar la memoria reservada para los datos del objeto.
  • La mayoría de los lenguajes lo tiene implementado por default por lo que solo se lo implementa cuando el objeto reserva memoria en tiempo de ejecución.

Modificador

  • Permite cambiar el estado de un objeto, modificando los atributos del mismo.
  • Ej.
  • Void Fecha::SetDia(byte dd)
  • { SetFecha(dd, m, a);
  • }

Selector

  • Permite devolver el valor de los atributos sin alterar su estado.
  • Ej.
  • byte Fecha::GetDia()
  • { return d;
  • }

Identidad

  • Es la propiedad de un objeto que lo distingue de todos los demás objetos
  • No hay que confundir el nombre de un objeto con el objeto mismo.
  • Ej. piolin != &piolin;
  • Puede haber varias variables que se refieran al mismo objeto, pero no varios objetos con la misma identidad.
  • Ej. Canario *pointer = &piolin;
  • Puede haber objetos con el mismo estado pero identidades diferentes.
  • Ej. Canario cantarin = piolin;
  • Conclusión: hay dos tipos de igualdad: de estado y de identidad.

Métodos – Ejemplo1-2

  • CQuebrado
  • PonNumerador
  • PonDenominador
  • ObtDenominador
  • ObtNumerador
  • Simplificar
  • CVector
  • PonDimension
  • PonElemento
  • ObtDimension
  • ObtElemento
  • Ordenar
  • Representación gráfica de los métodos de las clases CQuebrado y CVector

Método Constructor

  • El método constructor es un proceso cuyo trabajo consiste en: Reservar espacio de memoria para un objeto de la clase e inicializar los atributos del objeto.
  • El constructor es invocado explicitamente en Object Pascal, e implícitamente en C++.
  • Todas las clases definen al menos un método constructor.

Contructor – Ejemplo1

  • Implementación en OP
  • Constructor Cquebrado.Create;
  • Begin
  • num:=1;
  • den:=1;
  • End;
  • Implementación en C++
  • Cquebrado::Cquebrado()
  • {
  • num=1;
  • den =1;
  • }

Constructor – Ejemplo2

  • Implementación en OP
  • Constructor Cvector.Create;
  • Begin
  • dim:=0;
  • End;
  • Implementación en C++
  • Cvector::Cvector()
  • {
  • dim=0;
  • }
  • Se inicializan los objetos de la clase Cvector como un vector vacio, es decir, sin elementos

Método Destructor

  • Concepto. El destructor es un proceso que se encarga de liberar el espacio de memoria asignado a los atributos del objeto y al objeto mismo.
  • Normalmente no es necesario implementar el destructor a menos que los atributos del objeto sean punteros.

Destructor – Ejemplo1-2

  • Implementación en OP
  • Destructor Cquebrado.Destroy;
  • Begin
  • ------
  • End;
  • Destructor Cvector.Destroy;
  • Begin
  • -----
  • End;
  • Implementación en C++
  • Cquebrado::~Cquebrado()
  • {
  • -------
  • }
  • Cvector::~Cvector()
  • {
  • ------
  • }

Método Ponedor

  • El método ponedor es un proceso cuyo trabajo consiste en asignar valores a los atributos de un objeto.
  • En una clase debe haber por lo menos un método ponedor para cada uno de los atributos.
  • Para los nombres de los procesos ponedores normalmente se utilizan los prefijos Set o Pon

Ponedor – Ejemplo1 en OP

  • Procedure Cquebrado.PonNumerador(n:word);
  • Begin
  • num:=n;
  • End;
  • Procedure Cquebrado.PonDenominador(d:word);
  • Begin
  • den:=d;
  • End;

CLASE – Ejemplo1

  • Deseamos construir un tipo de dato que permita almacenar datos de la siguiente forma: ¼, ½, 3/5 , 4/7, etc.
  • tal tipo de dato podría llamarse Cquebrado
  • Representación gráfica
  • CQuebrado

CLASE - CQuebrado

  • Definición de la clase Cquebrado en C++
  • class Cquebrado {
  • private:
  • --------
  • public:
  • --------
  • };

CLASE – Ejemplo1

  • Deseamos construir un tipo de dato que permita almacenar datos de la siguiente forma: ¼, ½, 3/5 , 4/7, etc.
  • tal tipo de dato podría llamarse Cquebrado
  • Representación gráfica
  • CQuebrado

CLASE - CQuebrado

  • Definición de la clase Cquebrado en Object Pascal
  • TYPE
    • CQuebrado = Class
    • private
    • --------
    • public
    • -------
    • End;
  • Definición de la clase Cquebrado en C++
  • class Cquebrado {
  • private:
  • --------
  • public:
  • --------
  • };

CLASE – Ejemplo1

  • Deseamos construir un tipo de dato que permita almacenar datos de la siguiente forma: ¼, ½, 3/5 , 4/7, etc.
  • tal tipo de dato podría llamarse Cquebrado
  • Representación gráfica
  • CQuebrado

CLASE - CQuebrado

  • Definición de la clase Cquebrado en Object Pascal
  • TYPE
    • CQuebrado = Class
    • private
    • --------
    • public
    • -------
    • End;
  • Definición de la clase Cquebrado en C++
  • class Cquebrado {
  • private:
  • --------
  • public:
  • --------
  • };

Ponedor – Ejemplo1 en C++

  • void Cquebrado::PonNumerador(unsigned n)
  • {
  • num:=n;
  • }
  • void Cquebrado::PonDenominador(unsigned d)
  • {
  • den:=d;
  • }

Método Selector

  • El método selector es una función, cuyo trabajo consiste en devolver el valor guardado en los atributos.
  • En cada clase se define por lo menos un método selector por cada uno de los atributos de la clase.
  • Para los nombres de los selectores se utilizan normalmente los prefijos Set u Obt.

Selector – Ejemplo1 en OP

  • Function Cquebrado.ObtNumerador:word;
  • Begin
  • result:=num;
  • End;
  • Function Cquebrado.ObtDenominador:word;
  • Begin
  • result:=den;
  • End;

Selector – Ejemplo2 en OP

  • Function Cvector.ObtDimension:word;
  • Begin
  • result:=dim;
  • End;
  • Function Cvector.ObtElemento(i:word):integer;
  • Begin
  • result:=elementos[i];
  • End;

Selector – Ejemplo1 en C++

  • unsigned Cquebrado::ObtNumerador()
  • {
  • return num;
  • }
  • unsigned Cquebrado::ObtDenominador()
  • {
  • return den;
  • }

Otros métodos

  • Además de los métodos básicos, las clases pueden proveer de otros métodos para un mejor aprovechamiento.
  • Estos otros métodos no tienen nombres especiales (constructor, selector, etc), son simplemente métodos.

Otros métodos-Ejemplo1 en OP

  • Procedure CQuebrado.Simplificar;
  • var x,i:integer;
  • Begin
  • i:=2;
  • REPEAT
  • if ((num MOD i)=0) AND ( (den MOD i)=0) then
  • Begin
  • num:=num DIV i; den:=den DIV i;
  • end else begin
  • i:=i+1;
  • end;
  • x:=Menor(num,den);
  • UNTIL i>(x DIV 2);
  • End;

Otros métodos-Ejemplo1 en OP

  • //funcion que devuelve el valor del quebrado en string
  • Function Cquebrado.ToStr:string;
  • Begin
  • result:=intToStr(num)+’/’+intToStr(den);
  • End;


La base de datos está protegida por derechos de autor ©absta.info 2016
enviar mensaje

    Página principal