Unidad II Conceptos Bsicos de la Orientacin a Objetos (Programacin). Sergio Snchez Rios. Ingeniero en Informtica Licenciado en Informtica Sergio Snchez Rios Introduccin Este material de estudio solo fue creado con el objetivo de repasar algunos conceptos aprendidos de programacin Orientada a Objetos en cursos de nivel inferior.
El lenguaje utilizado en los ejemplos es C# (nuevo lenguaje de Microsoft), la justificacin tcnica de su utilizacin se sustenta es que la sintaxis es muy parecida a la JAVA y C++.
Sergio Snchez Rios Clases Existen varias definiciones de clases: Una representacin abstracta de algo real: esto, ya que los elementos bsicos para una clasificacin se encuentran en una clase. Ejemplo: Si quisiramos clasificar a los perros sabramos que cada uno de ellos tiene comportamientos comunes (caminan, ladran, comen) y caractersticas (patas, color de pelo entre otras). Por lo tanto se ocupa la clase perro para agrupar a todos los animales de ese tipo.
Un proyecto para crear objetos: una clase es esencialmente un proyecto para crear objetos. Sergio Snchez Rios Clases (Implementacin en C#) En C# se utiliza para definir una clase la palabra clave class antes del nombre de la clase. Adems los miembros de la clase se insertan entre corchetes. Ejemplo: class nombre_clase { atributos y metodos; } Ejemplo Clase Cliente: class Cliente { //propiedades private rut numeric; private string nombre; private string nombre;
//metodos public void ingresar(); public void lista(..); . }
Sergio Snchez Rios Objetos Un objeto es la instancia de una clase. Una clase es una representacin abstracta de algo, mientras que un objeto es un ejemplo utilizable de la cosa que representa la clase. Ejemplo: Clase Cliente Objeto cliente JUAN PEREZ Cada objeto muestra: Identidad: cada objeto es distinguible. Comportamiento: los objetos realizan tareas. Estado: los objetos almacenan informacin. Sergio Snchez Rios Objetos (Implementacin en C#) Un objeto se crea utilizando el operador new para crear un objeto. Ejemplo: Cliente newcliente = new Cliente();
Para acceder a los miembros de una clase, se utiliza el nombre de la clase un punto y el nombre del miembro (propiedad o mtodo). Ejemplo: newcliente.nombre = Juan Perez; Sergio Snchez Rios Objetos (Implementacin en C#) Miembros estticos versus instancias Los miembros estticos los comparten todas las instancias de una clase. Los miembros de instancia pertenecen a instancias especficas de una clase, un objeto. Cada instancia de una clase contiene una copia separada de todos los miembros de instancia de la clase. Por defecto los miembros son de instancia. Para volverlos estticos, utilice el modificador static antes del nombre del miembro. Ejemplo: class Reloj{ static int hora;
} Un campo static identifica exactamente una sola ubicacin de almacenamiento. Sin importar cuantas instancias de un tipo se generen, solamente existe una copia de un campo static. Los mtodos y propiedades estticas solo pueden ser llamadas utilizando el nombre de la clase Sergio Snchez Rios Objetos (Implementacin en C#) Miembros estticos versus instancias Ejemplo uso de static:
>>>>>> Sergio Snchez Rios Principios Bsicos de la OO Encapsulamiento El encapsulamiento se puede reflejar de dos maneras: Combinar los datos y los mtodos en una entidad nica: una vez que se combinan los datos y las funciones en una entidad nica, la entidad misma forma un limite cerrado, creando naturalmente una parte interna y una externa. Ejemplo: la clase.
Controlar la capacidad de acceso a los miembros de la entidad: puede usar este lmite para controlar selectivamente la capacidad de acceso de las entidades: algunos se podrn acceder solamente desde dentro; otras tanto como desde dentro como desde fuera. Los miembros que siempre son accesibles son pblicos, y los que slo se pueden acceder desde dentro son privados. Sergio Snchez Rios Principios Bsicos de la OO Encapsulamiento (Implementacin en C#) Alcance (Modificadores de Acceso) Capacidad de Acceso Significado public El acceso no est restringido protected El acceso est limitado a la clase de contenido o a los tipos derivados de la clase de contenido. private El acceso esta limitado al tipo de contenido. Recomendacin: Debe hacer pblico nicamente aquellos objetos que los usuarios de su clase necesiten ver. Sergio Snchez Rios Principios Bsicos de la OO Encapsulamiento (Implementacin en C#) Propiedades Son miembros de clase que proporcionan acceso a los elementos de un objeto o clase. Nomenclatura: public tipodato miPropiedad{ get{ //Cdigo para obtener valor de la propiedad } set{ //Cdigo para asignar valor a la propiedad } } Sergio Snchez Rios Principios Bsicos de la OO Encapsulamiento (Implementacin en C#) Propiedades Ejemplo:
>>>>>> Sergio Snchez Rios Principios Bsicos de la OO Encapsulamiento (Implementacin en C#) Constructores Un constructor es el que permite crear e inicializar una instancias de una clase. Es decir, convierte la memoria asignada por new en un objeto. Nota: El nombre del mtodo constructor es el mismo de la clase y no retorna valores. Existen dos tipos de constructores: Constructores de Instancia: son los constructores que inicializan los objetos. Constructores estticos: son los que inicializan las clases. Nota: Sino se define un constructor, se crea un constructor por defecto Sergio Snchez Rios Principios Bsicos de la OO Encapsulamiento (Implementacin en C#) Constructores Un constructor es el que permite crear e inicializar una instancias de una clase. Es decir, convierte la memoria asignada por new en un objeto. Nota: El nombre del mtodo constructor es el mismo de la clase y no retorna valores. Existen dos tipos de constructores: Constructores de Instancia: son los constructores que inicializan los objetos. Constructores estticos: son los que inicializan las clases. Nota: Sino se define un constructor, se crea un constructor por defecto. Sergio Snchez Rios Principios Bsicos de la OO Encapsulamiento (Implementacin en C#) Constructores Ejemplo: >>>> Sergio Snchez Rios Principios Bsicos de la OO Herencia La capacidad de utilizar toda la funcionalidad de una clase existente y ampliar esas capacidades sin volver a escribir la clase original. Ms tcnicamente, la herencia especifica una relacin es un tipo de Un perro es un tipo de animal. Un conejo es un tipo de animal. Animal Conejo Perro Las clases derivadas heredan propiedades y mtodos de una clase base. Por lo tanto, la clase derivada reutiliza la funcionalidad de la clase base. (REUTILIZACIN) Sergio Snchez Rios Principios Bsicos de la OO Herencia Tipos de Herencia Herencia nica: deriva de una clase base
Herencia Mltiple: deriva de dos o ms clases. Animal Perro Animal Perro Mamfero Sergio Snchez Rios Principios Bsicos de la OO Herencia (Implementacin en C#) Cuando se crea una clase derivada, se debe especificar la clase base de la cul deriva. Utilice la siguiente sintaxis: class nombre_clase : nombre_clase_base { // Cuerpo de la clase .. }
Una clase derivada hereda todo de su clase base (con excepcin de los constructores y destructores de la clase base). Sergio Snchez Rios Principios Bsicos de la OO Herencia (Implementacin en C#) Ejemplo: >>>> Sergio Snchez Rios Principios Bsicos de la OO Herencia (Implementacin en C#) Acceder a los miembros de la clase base Una clase derivada podr acceder directamente a un miembro de la clase base si este es declarado como public (no es recomendable) o protected. Si se declara como protected, significa que los miembros estarn accesibles para todas las clases derivadas de manera directa e indirecta de la clase base. Sergio Snchez Rios Principios Bsicos de la OO Herencia - Interfaces Una interfaz especifica un contrato sintctico y semntico al cual se deben adherir todas las clases derivadas. Especficamente, una interfaz describe la parte de qu del contrato, y las clases que implementan la interfaz describen la parte del como.
En resumen, una interfaz es como una clase sin cdigo. Sergio Snchez Rios Principios Bsicos de la OO Herencia Interfaces (Implementacin en C#) Para declarar una interfaz, se utiliza la palabra clave interface en lugar de class. Nota: se recomienda que todas las interfaces comiencen con el prefijo I. Ejemplo: interface Ipersona { void come(); string nombre(); } Consideraciones sobre Interfaces: -Una clase puede implementar cero o ms interfaces. -Una Clase debe implementar todos los mtodos heredados de interfaces. -El mtodo de implementacin debe ser el mismo que el mtodo de la interfaz. -DE LAS INTERFACES NO SE PUEDEN CREAR INSTANCIAS. Sergio Snchez Rios Principios Bsicos de la OO Herencia Interfaces (Implementacin en C#) Ejemplo: >>>> Sergio Snchez Rios Principios Bsicos de la OO Herencia Clases Abstractas Resulta til crear una clase que contenga mtodos que las clases derivadas deben implementar, pero no la misma clase base. Una clase abstracta es una clase que puede obtener miembros abstractos. Considrese miembros abstractos un mtodo vaco, sin implementacin. En lugar de eso, las clases deben proporcionar una implementacin. Adems, estas clases abstractas tambin pueden contener miembros no abstractos. Las clase abstractas son particularmente til para proporcionar una implementacin parcial de una interfaz que puede ser reutilizada por varias clases derivadas. Sergio Snchez Rios Principios Bsicos de la OO Herencia Clases Abstractas (Implementacin en C#) Para declarar una clase abstracta o mtodo abstracto debe ocupar la palabra reservada abstract. Ejemplo: abstract class Marco { //cuerpo puede tener mtodos abstractos y otros. } Las Clases Abstractas son clase no terminadas que contienen planos para lo que es necesario que se termine. Sergio Snchez Rios Principios Bsicos de la OO Herencia Clases Abstractas (Implementacin en C#) Ejemplo: >>>> Sergio Snchez Rios Principios Bsicos de la OO Polimorfismo La capacidad de definir varias clases con una funcionalidad diferente, pero con mtodos de nombre idntico, o propiedades que puede usar el cdigo del cliente de manera intercambiable en el tiempo de ejecucin.
Literalmente el polimorfismo significa muchas formas o muchas figuras. Es el concepto de que un mtodo declarado en una clase base se puede implementar en muchas formas distintas en las diferentes clases derivadas. Sergio Snchez Rios Principios Bsicos de la OO Polimorfismo (Implementacin en C#) El polimorfismo se puede implementar de varias formas: Polimorfismo de interfaz: Varias clases pueden implementar la misma interfaz. La implementacin especfica de los miembros de la interfaz pertenecen a cada clase de implementacin. Polimorfismo de herencia: Se puede heredar varias clases de una clase base nica. Se pueden sobrescribir los miembros base para proporcionar diferentes implementaciones. Polimorfismo a travs de las clases abstractas: se pueden implementar algunos o todos los miembros de la clase abstracta (heredada), y queda en la clase heredada proporcionar esa implementacin. Los miembros que se implementan an pueden sobrescribirse. Sergio Snchez Rios Principios Bsicos de la OO Polimorfismo (Implementacin en C#) Polimorfismo de interfaz Esta es una tcnica poderosa en la programacin orientada a objetos es la capacidad de implementar varias interfaces en un objeto.
Ejemplo: >>>> Sergio Snchez Rios Principios Bsicos de la OO Polimorfismo (Implementacin en C#) Polimorfismo de herencia Este es un mecanismo potente para tareas de desarrollo a escala pequea, pero por lo general ha probado ser problemtico para sistemas a gran escala. Mtodos Virtuales Para proporcionar este tipo de polimorfismo se deben utilizar los mtodos virtuales. Un mtodo virtual es uno cuya implementacin se puede reemplazar a travs de un mtodo en una clase derivada. Cuando crea un mtodo en una clase base que espera que se altere en las clases derivadas, defina el mtodo en su clase base como un mtodo virtual. Sergio Snchez Rios Principios Bsicos de la OO Polimorfismo (Implementacin en C#) Polimorfismo de herencia Para declarar un mtodo virtual se utiliza la palabra clave virtual. Ejemplo: class ejemplo { public virtual metodo() { /* cuerpo mtodo */ } } Para sobrescribir un mtodo en la clase derivada se utiliza la palabra reservada override. Sergio Snchez Rios Principios Bsicos de la OO Polimorfismo (Implementacin en C#) Polimorfismo de herencia Ejemplo: >>>> Sergio Snchez Rios Principios Bsicos de la OO Polimorfismo (Implementacin en C#) Polimorfismo a travs de clase abstracta Ejemplo: >>>> Sergio Snchez Rios Bibliografa Gua del Tpico: