Está en la página 1de 8

Unidad I Introduccin al paradigma de la programacin orientado a objetos. 1.

1 Elementos del modelo de objetos: clases, objetos, abstraccin, modularidad, encapsulamiento, herencia y polimorfismo. Clase: Una clase es una agrupacin de datos (variables o campos) y de funciones (mtodos) que operan sobre esos datos. La definicin de una clase se utiliza en la siguiente forma:
Las clases se declaran mediante la palabra clave class, tal como se muestra en el ejemplo siguiente: public class Customer { / / Campos, propiedades, mtodos y eventos van aqu ... }

La clase es la descripcin de una familia de objetos que tienen la misma estructura (atributos) y el mismo comportamiento (mtodos). En el caso que estamos siguiendo tendramos la clase Crculo en el que se definiran los atributos y los mtodos que definen cualquier crculo. Cada ejemplar de crculo sera un objeto (o instancia) de la clase crculo en los que cada uno tendra sus propias coordenadas (su centro y su radio), y todos compartiran los mismos mtodos. Un ejemplo de cmo declarar un mtodo de nombre Cumpleaos es la siguiente modificacin de la definicin de la clase Persona usada antes como ejemplo: class Persona{string Nombre; // Campo de cada objeto Persona que almacena su no mbreint Edad; // Campo de cada objeto Persona que almacena su edadstring NIF; // Campo de cada objeto Persona que almacena su NIFvoid Cumpleaos() // Incrementa en uno de la edad del objeto Persona {Edad++; } }

Los objetos: El elemento fundamental de la POO es, como su nombre indica, el objeto. Podemos definir un objeto como un conjunto complejo de datos y programas que poseen estructura y forman parte de una organizacin. En este caso las estructuras de datos y los algoritmos usados para manipularlas estn encapsulados en una idea comn llamada objeto.

Esta definicin especifica dos propiedades caractersticas de los objetos: En primer lugar, un objeto no es un dato simple, sino que contiene en su interior cierto nmero de componentes bien estructurados. En segundo lugar, cada objeto no es un ente aislado, sino que forma parte de una organizacin jerrquica o de otro tipo.

Abstraccin: Podemos definir la abstraccin como una operacin intelectual que separa las cualidades de un objeto para considerarlas aisladamente o para analizar al objeto en su pura esencia o nocin. Bsicamente es la capacidad de separar los elementos (al menos mentalmente) para poder verlos de forma singular. Como cuando describimos el cuerpo humano y decimos cabeza, brazo(s), pierna(s), etc. En los lenguajes de programacin orientada a objetos, el concepto de Clase es la representacin y el mecanismo por el cual se gestionan las abstracciones.

Modularidad La Modularidad es la propiedad que permite subdividir una aplicacin en partes ms pequeas (llamadas mdulos), cada una de las cuales debe ser tan independiente como sea posible de la aplicacin en s y de las restantes partes. La modularizacin consiste en dividir un programa en mdulos que se puedan compilar por separado, pero que tienen conexiones con otros mdulos. Al igual que la encapsulacin, los lenguajes soportan la Modularidad de diversas formas.

Encapsulamiento: Como se puede observar de los diagramas, las variables del objeto se localizan en el centro o ncleo del objeto. Los mtodos rodean y esconden el ncleo del objeto de otros objetos en el programa. Al empaquetamiento de las variables de un objeto con la proteccin de sus mtodos se le llama encapsulamiento. Tpicamente, el encapsulamiento es utilizado para esconder detalles de la puesta en prctica no importantes de otros objetos. Entonces, los detalles de la puesta en prctica pueden cambiar en cualquier tiempo sin afectar otras partes del programa. 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. Es la relacin entre una clase general y otra clase ms especfica. Es

un mecanismo que nos permite crear clases derivadas a partir de clase base, Nos permite compartir automticamente mtodos y datos entre clases subclases y objetos. Por ejemplo: Si declaramos una clase prrafo derivada de una clase texto todos los mtodos y variables asociadas con la clase texto son automticamente heredados por la subclase prrafo. El objeto Persona es un objeto muy genrico y limitado en s; as que se puede considerar como un objeto Abstracto; ya que por si mismo no puede crear una persona completa; sin embargo, sus funciones bsicas son las mismas en todos los seres humanos, con diferencias puntuales, as que podemos crear dos objetos Hombre y Mujer, que hereden todas sus caractersticas genricas como respirar, hablar, nombre, etc., del objeto Persona, y sea en la implementacin de cada objeto donde empiezan las diferencias. Ejemplo de Herencia de un vehculo

Ejemplo que pone de manifiesto cmo funciona la herencia es el siguiente:


using System; class Persona { // Campo de cada objeto Persona que almacena su nombre public string Nombre; // Campo de cada objeto Persona que almacena su edad public int Edad; // Campo de cada objeto Persona que almacena su NIF public string NIF; void Cumpleaos() { Edad++; } // Incrementa en uno de edad del objeto Persona

// Constructor de Persona public Persona(string nombre, int edad, string nif) { Nombre = nombre; Edad = edad; NIF = nif; } } class Trabajador : Persona { // Campo de cada objeto Trabajador que almacena cunto gana public int Sueldo; Trabajador(string nombre, int edad, string nif, int sueldo) : base(nombre, edad, nif) { // Inicializamos cada Trabajador en base al constructor de Persona Sueldo = sueldo;

} public static void Main() { Trabajador p = new Trabajador("Josan", 22, "77588260-Z", 100000); Console.WriteLine("Nombre=" + p.Nombre); Console.WriteLine("Edad=" + p.Edad); Console.WriteLine("NIF=" + p.NIF); Console.WriteLine("Sueldo=" + p.Sueldo); Console.Read(); } }

Polimorfismo: El polimorfismo consiste en obtener un mismo mtodo con diferentes funciones, es decir, suponiendo que tengamos una clase Saludo con el mtodo Saludo el cual sera su constructor, pero en este caso tendramos varios constructores pero siempre siguiendo las reglas de independencia en cuestin a los parmetros de cada constructor para que as puedan diferenciarse uno de otro, sin embargo cada uno tendr diferentes procesos internos en s mismo Ejemplo utilizando Polimorfismo herencia, encapsulamiento:
Tenga en cuenta que en la clase Auto, existen 2 mtodos con el mismo nombre, Vehculo, pero la diferencia es que uno esta con parmetros y el otro no. Con parmetros: public void vehiculo(string color, int ruedas, int puertas).. en esta nos va pedir que le enviemos desde la clase Program, dichos parmetros, osea color, ruedas y puertas. Sin parmetros: public void vehiculo() Aqu no tenemos que enviar nada, porque en ese mtodo (sin parmetros) ya estn los datos incluidos. Solo lo llamamos y el ejecuta su contenido y lo enviar. La gracia es que en la clase program.cs, se llamaran a esos mtodos donde escogeremos cual de ellas usar.

En el ejemplo usamos las 2, primero con parmetros y luego sin parmetros.

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace Cap14_POO_Polimorfismo { class Auto { public string Color; public int Ruedas; public int Puertas; public void vehiculo(string color, int ruedas, int puertas) { Console.WriteLine("\n\n Metodo CON parametros"); Console.WriteLine(" ====================="); Console.WriteLine("\n Color: " + color + "\n Ruedas: " + ruedas + "\n Puertas: " + puertas + "\n"); Console.ReadKey(); } public void vehiculo() { Color = "Azul"; Ruedas = 4; Puertas = 4; Console.WriteLine("\n\n Metodo SIN parametros"); Console.WriteLine(" ====================="); Console.WriteLine("\n Color: " + Color + "\n Ruedas: " + Ruedas + "\n Puertas: " + Puertas); Console.ReadKey(); } } }

namespace Cap14_POO_Polimorfismo { class Program { static void Main(string[] args) { Auto ObjetoAuto = new Auto (); ObjetoAuto.vehiculo("Negro", 4, 5); ObjetoAuto.vehiculo (); } } }

1.2 LENGUAJE DE MODELADO UNIFICADO: DIAGRAMA DE CLASES Lenguaje Unificado de Modelado: Es el lenguaje de modelado de sistemas de software ms conocido y utilizado en la actualidad. Es un lenguaje grfico para visualizar, especificar, construir y documentar un sistema. UML ofrece un estndar para describir un "plano" del sistema (modelo), incluyendo aspectos conceptuales tales como procesos de negocio y funciones del sistema, y aspectos concretos como expresiones de lenguajes de programacin, esquemas de bases de datos y componentes reutilizables. El lenguaje de modelado es la notacin (principalmente grfica) que usan los mtodos para expresar un diseo. El proceso indica los pasos que se deben seguir para llegar a un diseo. Los diagramas de clases: se utilizan para mostrar la estructura esttica del sistema modelado pueden contener clases, interfaces, paquetes, relaciones e incluso instancias, como objetos o enlaces. Los diagramas de clases son una potente herramienta de diseo ayudando a los desarrolladores a planificar y establecer la arquitectura y estructura del sistema y subsistema antes de escribir el ningn cdigo esto permite asegurar que el sistema est bien diseado desde el principio. El diagrama de clase describe los tipos de objetos que hay en el sistema y las diversas clases de relaciones estticas que existen entre ellos. Hay dos tipos principales de relaciones estticas: Asociaciones (por ejemplo, un diente puede rentar diversas videocintas).Subtipos (una enfermera es un tipo de persona). Los diagramas de clase tambin muestran los atributos y operaciones de una clase y las restricciones a que se ven sujetos, segn la forma en que se conecten los objetos. Interfaces: Una interfaz es un conjunto de mtodos abstractos y propiedades. En ellas se especifica qu se debe hacer pero no su implementacin. Sern las clases que implementen estas interfaces las que describan la lgica del comportamiento de los mtodos. Instancia:

Se llama instancia a todo objeto que derive de algn otro. De esta forma, todos los objetos son instancias de algn otro, menos la clase Object que es la madre de todas.