Unidad 1 Programacion Orientada a Objetos

Unidad I Introducción al paradigma de la programación orientado a objetos. 1.1 Elementos del modelo de objetos: clases,

Views 41 Downloads 2 File size 558KB

Report DMCA / Copyright

DOWNLOAD FILE

Recommend stories

Citation preview

Unidad I Introducción al paradigma de la programación orientado a objetos. 1.1 Elementos del modelo de objetos: clases, objetos, abstracción, modularidad, encapsulamiento, herencia y polimorfismo. Clase: Una clase es una agrupación de datos (variables o campos) y de funciones (métodos) que operan sobre esos datos. La definición 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, métodos y eventos van aquí ... }

La clase es la descripción de una familia de objetos que tienen la misma estructura (atributos) y el mismo comportamiento (métodos). En el caso que estamos siguiendo tendríamos la clase Círculo en el que se definirían los atributos y los métodos que definen cualquier círculo. Cada ejemplar de círculo sería un objeto (o instancia) de la clase círculo en los que cada uno tendría sus propias coordenadas (su centro y su radio), y todos compartirían los mismos métodos. Un ejemplo de cómo declarar un método de nombre Cumpleaños es la siguiente modificación de la definición 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 Cumpleaños() // 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 organización. En este caso las estructuras de datos y los algoritmos usados para manipularlas están encapsulados en una idea común llamada objeto.

Esta definición especifica dos propiedades características de los objetos:  

En primer lugar, un objeto no es un dato simple, sino que contiene en su interior cierto número de componentes bien estructurados. En segundo lugar, cada objeto no es un ente aislado, sino que forma parte de una organización jerárquica o de otro tipo.

Abstracción: Podemos definir la abstracción como una operación intelectual que separa las cualidades de un objeto para considerarlas aisladamente o para analizar al objeto en su pura esencia o noción. Básicamente 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 programación orientada a objetos, el concepto de Clase es la representación y el mecanismo por el cual se gestionan las abstracciones.

Modularidad La Modularidad es la propiedad que permite subdividir una aplicación en partes más pequeñas (llamadas módulos), cada una de las cuales debe ser tan independiente como sea posible de la aplicación en sí y de las restantes partes. La modularización consiste en dividir un programa en módulos que se puedan compilar por separado, pero que tienen conexiones con otros módulos. Al igual que la encapsulación, 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 núcleo del objeto. Los métodos rodean y esconden el núcleo del objeto de otros objetos en el programa. Al empaquetamiento de las variables de un objeto con la protección de sus métodos se le llama encapsulamiento. Típicamente, el encapsulamiento es utilizado para esconder detalles de la puesta en práctica no importantes de otros objetos. Entonces, los detalles de la puesta en práctica 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 características (métodos y atributos) similares a los ya existentes. Es la relación entre una clase general y otra clase más específica. Es

un mecanismo que nos permite crear clases derivadas a partir de clase base, Nos permite compartir automáticamente métodos y datos entre clases subclases y objetos. Por ejemplo: Si declaramos una clase párrafo derivada de una clase texto todos los métodos y variables asociadas con la clase texto son automáticamente heredados por la subclase párrafo. El objeto Persona es un objeto muy genérico 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 básicas son las mismas en todos los seres humanos, con diferencias puntuales, así que podemos crear dos objetos Hombre y Mujer, que hereden todas sus características genéricas como respirar, hablar, nombre, etc., del objeto Persona, y sea en la implementación de cada objeto donde empiezan las diferencias. Ejemplo de Herencia de un vehículo

Ejemplo que pone de manifiesto cómo 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 Cumpleaños() { 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 cuánto 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 método con diferentes funciones, es decir, suponiendo que tengamos una clase Saludo con el método Saludo el cual sería su constructor, pero en este caso tendríamos varios constructores pero siempre siguiendo las reglas de independencia en cuestión a los parámetros 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 métodos con el mismo nombre, Vehículo, pero la diferencia es que uno esta con parámetros y el otro no. Con parámetros: public void vehiculo(string color, int ruedas, int puertas).. en esta nos va pedir que le enviemos desde la clase Program, dichos parámetros, osea color, ruedas y puertas. Sin parámetros: public void vehiculo()… Aquí no tenemos que enviar nada, porque en ese método (sin parámetros) ya están 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 métodos donde escogeremos cual de ellas usar.

En el ejemplo usamos las 2, primero con parámetros y luego sin parámetros.

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 más conocido y utilizado en la actualidad. Es un lenguaje gráfico para visualizar, especificar, construir y documentar un sistema. UML ofrece un estándar 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 programación, esquemas de bases de datos y componentes reutilizables. El lenguaje de modelado es la notación (principalmente gráfica) que usan los métodos para expresar un diseño. El proceso indica los pasos que se deben seguir para llegar a un diseño. Los diagramas de clases: se utilizan para mostrar la estructura estática 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 diseño ayudando a los desarrolladores a planificar y establecer la arquitectura y estructura del sistema y subsistema antes de escribir el ningún código esto permite asegurar que el sistema esté bien diseñado desde el principio. El diagrama de clase describe los tipos de objetos que hay en el sistema y las diversas clases de relaciones estáticas que existen entre ellos. Hay dos tipos principales de relaciones estáticas: Asociaciones (por ejemplo, un diente puede rentar diversas videocintas).Subtipos (una enfermera es un tipo de persona). Los diagramas de clase también muestran los atributos y operaciones de una clase y las restricciones a que se ven sujetos, según la forma en que se conecten los objetos. Interfaces: Una interfaz es un conjunto de métodos abstractos y propiedades. En ellas se especifica qué se debe hacer pero no su implementación. Serán las clases que implementen estas interfaces las que describan la lógica del comportamiento de los métodos. Instancia:

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