Unidad 3 Lenguajes .Net y POO

Slides:



Advertisements
Presentaciones similares
Pilares de la POO.
Advertisements

Programación orientada a objetos en Visual Basic .NET
Curso de java básico (scjp)
FUNDAMENTALS OF THE JAVA PROGRAMMING LANGUAGE
Curso de Java Capitulo 7: Continuación Poo Profesor:
Curso de Java Capitulo 7: Conceptos sobre poo Profesor:
PROGRAMACION ORIENTADA A OBJETOS
Herencia en C#.
Fundamentos de la programación orientada a objetos
Lenguaje de programación Java
Arquitectura CLARO-TECNOTREE
Introducción a la Orientación a Objetos
La Programación Orientado a Objetos
POO Santiago, Mayo 2004 TRABAJO DE INVESTIGACIÓN POO Programación Orientada a Objetos CENAFOM Carolina Bravo V. Jaime Jofré B.
75.41 Algoritmos y Programación II Cátedra Ing. Patricia Calvo Programación Orientada a Objetos Encapsulamiento.
UNIVERSIDAD LATINA (UNILA) ENCAPSULACION Y HERENCIA
Aplicación del paradigma orientado a objetos
Diseño y programación de
PROGRAMACION ORIENTADA A OBJETOS
ORIENTADO A OBJETOS ESTUDIANTE JESSICA LORENA LEAL MEDINA INGENIERIA DE SOFTWARE PROGRAMA INGENIERIA DE SISTEMAS UNIVERSIDA COOPERATIVA DE COLOMBIA NEIVA-HUILA.
UNIDAD I. INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS EN JAVA.
Programación orientada a objetos Rosemary Torrico Bascopé.
POO (Programación Orientada a Objetos)
Clase IV Delio Alanis.
HERENCIA.
TALLER DE PROGRAMACIÓN III
Lic. Rosemary Torrico Bascopé
UNIVERSIDAD TECNOLÓGICA DE HERMOSILLO T.S.U. EN T.I.C., Área: Sistemas Informáticos Ing. José Padilla Duarte y estudiantes de Sistemas Informáticos Hermosillo,
Clases y objetos La unidad fundamental de programación OO son las clases. Conjunto de métodos y semántica Qué se va a hacer POO Clase: que define la implementación.
Material Original de Microsoft para desarrolladores adaptado por Jorge Miguel PERALTA para clases de Informática Aplicada (Haga clic para adelantar/atrasar.
Universidad Autónoma del Estado de Hidalgo Instituto de Ciencias Básicas e Ingeniería Área Académica de Computación y Electrónica Licenciatura en Ciencias.
 El termino OO, significa que el software es organizado como una colección de objetos. Un objeto es un paquete de software que contiene datos y procedimientos.
Introducción a la programación Orientada a objetos
PROGRAMACIÓN ORIETADA A OBJETOS
Diagramas de Clase Angela Carrillo R..

Fundamentos de Programación
Introducción a la POO • ¿Qué es la programación orientada a objets (POO)? – Un “paradigma” de programación – Una forma de pensar acerca de los problemas.
Contenido: 1- Que es el .Net Framework 2- Arquitectura en .Net
Abstracción de Datos y Orientación a Objetos.. Vista General. Por qué la abstracción de datos y la programación orientada a objetos. Módulos y módulos.
Programación Orientada a Objetos
Programación Orientada Objetos
Clase 03 ELEMENTOS DE COMPUTACIÓN Contenidos Objeto Clase Atributo Método Instancia Herencia Polimorfismo UML.
CS-432: Ingeniería Moderna de Software Semana 3
Módulo 7: Programación Orientada a Objetos en Visual Basic 2005.
Constructor  Un constructor es un método que inicia un objeto inmediatamente después de su creación. De esta forma nos evitamos el tener que iniciar.
Sara Isabel Osorio Alacraz Ana Isabel Vallejo Grisales
Herencia. Introducción La idea básica es poder crear clases basadas en clases ya existentes. Cuando heredamos de una clase existente, estamos re-usando.
Facultad de Ingeniería
PROGRAMACION ORIENTADA A OBJETOS
Introducción a la Programación Orientada a Objetos (POO)
Ing. Esp. Ricardo Cujar. Programación Orientada a Objetos  Modelo de desarrollo de software.  Modo de pensar del hombre y no de la máquina.  Abstracción.
UNIVERSIDAD TECNICA DE BABAHOYO EXTENSION DE QUEVEDO  Espinales Lisseth G RUPO N º 2 Temas:  Herencia  Polimorfismo  Encapsulamiento  2 Ejemplos Estudiante.
Universidad Tecnológica de Izúcar de Matamoros Programa Educativo: Tecnologías de la Información Asignatura: Base de datos para aplicaciones Tema: Base.
M.C. Pedro Bello López 1 IMPLEMENTACIÓN. M.C. Pedro Bello López2.
PROGRAMACIÓN IV INTRODUCCIÓN.
Tipo de relación entre clases Es uno de los aspectos que distinguen el paradigma de orientación a objetos frente a otros paradigmas. Mecanismo que,
UNIVERSIDAD TECNOLÓGICA DE IZÚCAR DE MATAMOROS TECNOLOGÍAS DE LA INFORMACION Y COMUNICACIÓN BASE DE DATOS PARA APLICACIONES MTRO. GONZALO ROSAS CABRERA.
La Programación Orientado a Objetos
PRESENTACION DE INGENIERIA ORIENTADA A OBJETOS
Herencias Conceptos básicos i
Programación orientada a objetos La programación orientada a objetos o POO (OOP según sus siglas en inglés) es un paradigma de programación que usa objetos.
Prof. Manuel B. Sánchez. Un paradigma de programación representa un enfoque particular o filosofía para la construcción del software. No es mejor uno.
Programación Orientada a Objetos Unidad 5. Los objetos son entidades que combinan estado Contiene toda la información denominados atributos REPASO Cada.
2015-BM5A. Introducción Durante años, los programadores se han dedicado a construir aplicaciones muy parecidas que resolvían una y otra vez los mismos.
PARADIGMA viene del Griego Paradeima = Modelo. Un paradigma es el resultado de los usos, y costumbres, de creencias establecidas de verdades a medias,
Modelado UML Diagrama de Clases
Métodos en Java. Estructura de un programa en Java ► La relación con la vida misma la podemos ver en el siguiente comentario: Imaginemos que dos clases.
Prof. Manuel B. Sánchez. Es un mecanismo y uno de los pilares de la POO que permite definir nuevas clases a partir de otras preexistentes. La Herencia.
Programación I Clases. Paradigma POO La programación Orientada a objetos (POO) es una forma programar, más cercana a como expresaríamos las cosas en la.
Transcripción de la presentación:

Unidad 3 Lenguajes .Net y POO [UTN - Tecnologías de desarrollo de software IDE] [2008]

Contenidos Programación Orientada a Objetos Conceptos fundamentales del paradigma de OO Clases y Objetos Constructores y Destructores Métodos y Atributos Abstracción y Encapsulamiento Herencia Simple y Múltiple e Interfaces Polimorfismo Ocultamiento Clases Abstractas y Métodos Virtuales Clases Parciales (Partial Classes) Diseñador de Clases (Class Designer) Introducción Objetivos de la Unidad Después de completar esta unidad Ud. estará habilitado para: Conocer conceptos fundamentales del Paradigma POO Asociar conceptos de POO en Visual Studio .NET Aprender a usar la herramienta “Class Designer” para crear diagrama de clases en VS.NET Conocer la sintaxis de las estructuras básicas de programación tanto en Visual Basic como en C#

¿Qué es la Programación Orientada a Objetos? Es una manera de construir Software basada en un nuevo paradigma. Propone resolver problemas de la realidad a través de identificar objetos y relaciones de colaboración entre ellos. El Objeto y el mensaje son sus elementos fundamentales. La programación orientada a objetos entiende a la actividad de desarrollar software basados en el paradigma de orientación a objetos. Dentro de este paradigma, la programación es adquisición de conocimiento de la realidad que queremos modelar, en pos de construir un modelo computacional de la misma. Asociamos entonces a entes de la realidad, objetos del mundo computacional con el objetivo de construir un modelo de simulación de la misma. La programación orientada a objetos implica entre otros beneficios, gran capacidad de reuso. Dado que en la realidad resolvemos problemas a través de que los diferentes entes de la misma colaboren, una vez que hemos encontrado un mecanismo para resolver un problema, utilizamos éste para alcanzar el mismo resultado existoso una y otra vez. Dado que nuestro modelo computacional es una simulación de esta realidad, el reuso se presenta en ambos sentidos. El concepto de programación orientada a objetos (OOP) no es nuevo, lenguajes clásicos como SmallTalk se basan en ella. Dado que la OOP. se basa en la idea natural de la existencia de un mundo lleno de objetos y que la resolución del problema se realiza en términos de objetos, un lenguaje se dice que es orientado a objetos, si los elementos esenciales de construcción del software son objetos y mensajes. Podemos definir un objeto como un conjunto complejo de datos y programas que poseen estructura y forman parte de una organización. Esta definición especifica varias propiedades importantes de los objetos. En primer lugar, un objeto no es un dato simple, sino que contiene en su interior cierto número de componentes bién 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. POO

Clases Implica clasificación en base a comportamiento y atributos comunes Crea un vocabulario La forma en que nos comunicamos La forma en que nos expresamos Es una construcción estática Describe Comportamiento común Atributos [estado] Incluye Datos Funciones (métodos) Las clases son declaraciones de objetos, también se podrían definir como abstracciones de objetos. Esto quiere decir que la definición de un objeto es la clase. Cuando programamos un objeto y definimos sus características y funcionalidades en realidad lo que estamos haciendo es programar una clase. La clasificación se basa en un comportamiento y atributos comunes. Permite crear un vocabulario estandarizado para comunicarse y pensar dentro del equipo de trabajo. Una clase es una construcción estática que describe un comportamiento común y atributos (que toman distintos estados). Su formalización es a través de una estructura de datos que incluye datos y funciones, llamadas métodos. Los métodos son los que definen el comportamiento. POO

Constructor y Destructor Dos métodos de las clases, existen por defecto Constructor, inicializa valores Destructor, libera recursos al finalizar la vida de una instancia de una clase creada en memoria (en .Net) Existen constructores y destructores por defecto Toda clase tiene, de manera implícita o explicita, dos métodos. El constructor y el destructor. El constructor es llamado cuado la clase comienza a ocupar un lugar en memoria, es decir, cuando comienza a ser utilizada, al ser instanciada. Se encarga de inicializar valores, e incluso muchas veces de llamar a otros constructores de otras clases. El destructor es un método que se llama al finalizar la vida de la instancia de la clase, para liberar recursos. Cualquiera de los dos métodos tienen que formar parte de las clases, existen constructores y destructores por defecto, para las clases mas simples. En clases mas complejas, el desarrollador deberá implementar estos métodos. Muchas veces, los constructores reciben parámetros con los valores con los que la clase debe inicializarse. Las llamadas a constructores y destructores pueden ser implícitas o explicitas, dependiendo de la clase, la aplicación, etc. POO

¿Qué es un objeto? Instancia de una clase Un objeto posee: Identidad: Relación única entre el objeto del modelo y el ente de la realidad que representa. Se implementa a través de un id único en el modelo. Comportamiento: Resuelve un conjunto particular de problemas a través de su protocolo. Estado: Almacena información Fija Variable Los objetos son instancias de una clase. Cuando creamos una instancia tenemos que especificar la clase a partir de la cual se creará. Esta acción de crear un objeto a partir de una clase se llama instanciar Por ejemplo, un objeto de la clase fracción es por ejemplo 3/5. El concepto o definición de fracción sería la clase, pero cuando ya estamos hablando de una fracción en concreto 4/7, 8/1000 o cualquier otra, la llamamos objeto. Identidad: El principio de identidad se refiere a la relación única entre cada objeto del modelo computacional y el dominio de problema de la realidad que representa. En el modelo computacional esto se representa a través de un identificador único en el modelo. Comportamiento que le permite realizar tareas específicas, como a todos los objetos de su misma clase. Estado que se determina a través de cierta información almacenada, que puede ser fija o variable. POO

Pilares de POO Herencia Polimorfismo Encapsulamiento Abstracción POO

Abstracción Ignorancia selectiva Decide que es importante y que no lo es Se enfoca [depende] en lo que es importante Ignora [no depende] de lo que no es importante Utiliza la encapsulación para reforzar la abstracción POO

Encapsulamiento POO Acelera() 125 km/h velocidad 300 km/h Frena()

¿Por qué usar Encapsulamiento? Control Cambios POO

Encapsulamiento Métodos públicos: accesibles desde afuera Métodos privados: accesibles desde adentro Acelera() velocidad Frena() POO Controlador del Motor

Herencia Es una relación “un tipo de” entre clases Va de la generalización a la especialización Clase Base / Clase Derivada Hereda la implementación Transporte Acelera Frena POO Automóvil

Jerarquías de Clases – Ejemplo I Transporte Marítimo Aire Nieve Tierra DentroAtmosfera FueraAtmosfera 1-Persona N-Personas POO

Jerarquía de Clases – Ejemplo II Cuentas Cuenta Corriente Caja Ahorro Común Sueldo POO

Herencia Simple y Múltiple Simple: La clase hija deriva de una única clase padre Múltiple: La clase hija deriva de varias clases padre No es soportada por todos los lenguajes Puede ser confusa Nieve POO 1-Persona Terrestre

Clases Abstractas Proveen una implementación parcial para que sea heredada por las clases derivadas No pueden ser instanciadas Transporte { abstract } Taxi Colectivo POO <<Concrete>> <<Concrete>>

Métodos Abstractos Solo en clases abstractas No pueden contener implementación Deben ser implementados por las clases derivadas Los métodos abstractos son virtuales Los métodos abstractos pueden sobrescribir métodos de la clase base declarados como virtuales Los métodos abstractos pueden sobrescribir métodos de la clase base declarados como “override” Los métodos abstractos son declarados pero no implementados. Si existe un método abstracto entonces debemos declarar la clase como abstracta, y al declararla como tal no se pueden crear instancias de ella. Sirven para definir conceptos incompletos, que deben ser completados en las subclases de la clase abstracta. En el ejemplo, la clase transporte no puede ser instanciada, salvo desde alguna clase heredera, que implemente los métodos acelerar y frenar. POO

Métodos Virtuales Es un método que la clase base permite que sea sobrescrito en una clase derivada Un método no-virtual es la UNICA implementación posible para este método Cuando una declaración de método de instancia incluye un modificador virtual, se dice que el método es un método virtual. Si no existe un modificador virtual, se dice que el método es un método no virtual. La implementación de un método no virtual es invariable. La implementación es la misma tanto si se invoca un método en una instancia de la clase en la que se declaró o en una instancia de una clase derivada. En cambio, la implementación de un método virtual se puede sustituir por clases derivadas. El proceso de sustitución de la implementación de un método virtual heredado es conocido como reemplazamiento del método En la invocación de un método virtual, el tipo en tiempo de ejecución de la instancia para la que tiene lugar la invocación determina la implementación del método real a invocar. Cuando se invoca un método no virtual, el factor determinante es el tipo en tiempo de compilación de la instancia. Concretamente, cuando se invoca un método denominado N con una lista de argumentos A en una instancia con un tipo C en tiempo de compilación y un tipo R en tiempo de ejecución (donde R es C o una clase derivada de C), la invocación se procesa de la forma siguiente: En primer lugar, la resolución de sobrecarga se aplica a C, N y A para seleccionar un método específico M del conjunto de métodos declarados en y heredados por C. A continuación, si M es un método no virtual, se invoca M. Si no, M es un método virtual, y se invoca la implementación más derivada de M con respecto a R. Para cada método virtual que se ha declarado en una clase o heredado por ella, existe una implementación más derivada del método con respecto a esa clase. La implementación más derivada de un método virtual M con respecto a una clase R está determinada de la siguiente manera: Si R contiene la declaración virtual de M, ésta es la implementación más derivada de M. En caso contrario, si R contiene un override de M, ésta es la implementación más derivada de M. En caso contrario, la implementación más derivada de M con respecto a R es la misma que la implementación más derivada de M con respecto a la clase base directa de R. POO

Interfases Definen un “contrato” Contienen solo métodos sin implementación No heredan atributos No se pueden crear instancias de una interfase Las clases derivadas deben de implementar todas las operaciones heredadas Son clases que no tienen implementación. Sirven como tipos de otras clases. Todos sus métodos son abstractos. Una clase puede implementar varias interfases. Implican un contrato, un “protocolo” para que una clase y otra, que es utilizada por esta, se puedan comunicar. POO ITransportable Acelera Frena

Interfases Una clase puede implementar cero, una o más interfases Deben de implementarse todos los métodos heredados por la interfase Las interfases a su vez pueden heredar de múltiples interfases POO

Polimorfismo - Definición Dos o más objetos son polimórficos con respecto a un conjunto de mensajes, si todos ellos pueden responder a esos mensajes, aún cuando cada uno lo haga de un modo diferente. Cuando una declaración de método de instancia incluye un modificador virtual, se dice que el método es un método virtual. Si no existe un modificador virtual, se dice que el método es un método no virtual. La implementación de un método no virtual es invariable. La implementación es la misma tanto si se invoca un método en una instancia de la clase en la que se declaró o en una instancia de una clase derivada. En cambio, la implementación de un método virtual se puede sustituir por clases derivadas. El proceso de sustitución de la implementación de un método virtual heredado es conocido como reemplazamiento del método En la invocación de un método virtual, el tipo en tiempo de ejecución de la instancia para la que tiene lugar la invocación determina la implementación del método real a invocar. Cuando se invoca un método no virtual, el factor determinante es el tipo en tiempo de compilación de la instancia. Concretamente, cuando se invoca un método denominado N con una lista de argumentos A en una instancia con un tipo C en tiempo de compilación y un tipo R en tiempo de ejecución (donde R es C o una clase derivada de C), la invocación se procesa de la forma siguiente: En primer lugar, la resolución de sobrecarga se aplica a C, N y A para seleccionar un método específico M del conjunto de métodos declarados en y heredados por C. A continuación, si M es un método no virtual, se invoca M. Si no, M es un método virtual, y se invoca la implementación más derivada de M con respecto a R. Para cada método virtual que se ha declarado en una clase o heredado por ella, existe una implementación más derivada del método con respecto a esa clase. La implementación más derivada de un método virtual M con respecto a una clase R está determinada de la siguiente manera: Si R contiene la declaración virtual de M, ésta es la implementación más derivada de M. En caso contrario, si R contiene un override de M, ésta es la implementación más derivada de M. En caso contrario, la implementación más derivada de M con respecto a R es la misma que la implementación más derivada de M con respecto a la clase base directa de R. POO

Polimorfismo La definición del método reside en la clase base La implementación del método reside en la clase derivada Auto Acelera Frena El término de polimorfismo también define la capacidad de que más de un objeto puedan crearse usando la misma clase de base para lograr dos conceptos de objetos diferentes, en este caso podemos citar el típico ejemplo de los teléfonos, los cuales se basan en un teléfono base, con la capacidad de hacer ring y tener un auricular, para luego obtener un teléfono digital, inalámbrico, con botonera de marcado y también, tomando la misma base, construir un teléfono analógico y con disco de marcado. Si en el momento de la compilación de un programa se conoce la clase concreta del objeto que se usará, las llamadas a sus métodos quedarán fijadas mediante lo que se conoce como "enlace estático o temprano" (early binding), si no, habrá de determinarse la llamada adecuada en tiempo de ejecución, efectuándose entonces un "enlace dinámico o tardío" (late binding). Cohete Acelera Frena POO Transporte Acelera Frena Caballo Acelera Frena

Sobrecarga de Métodos Definir más de un método por cada mensaje, los tipos de los argumentos ayudan a decidir a qué mensaje se invoca Tareas similares son realizadas por métodos con mismo nombre Simplifican la tarea del desarrollador, al no tener que recordar distintos nombres para comportamientos iguales POO

Laboratorio Creando Clases Class Designer Proponer a los asistentes del curso la creación descripción, en atributos y métodos, de distintos objetos del mundo real. Por ejemplo: Auto, Casa, Multa por infracción de transito, Tarjeta de débito. ¿Qué otras cosas se pueden modelizar mediante POO? Class Designer

Clases Clase: es la definición de las características de un determinado tipo de objeto. C#: son declaradas mediante class VB.NET: usa las palabras Class / End Class POO y Sintaxis

Constructores Constructor: funciones dentro de la clase, que son llamadas cuando se crea una instancia de dicha clase. En C# tienen el mismo nombre de la clase VB.NET usa un procedimiento Sub New POO y Sintaxis

Propiedades Propiedad: característica o atributo de un objeto C# VB.NET POO y Sintaxis

Métodos Métodos: acciones que un objeto puede llevar a cabo. En C# todo método es una función VB.NET usa procedimientos Sub y funciones Function POO y Sintaxis

Sobrecarga de Métodos Sobrecarga: varios métodos con el mismo nombre pero diferentes parámetros. C# VB.NET POO y Sintaxis

Namespaces Namespace: grupo de clases que tienen el mismo prefijo C# VB.NET POO y Sintaxis

Herencia Herencia: mecanismo por el cual una clase (hija) hereda de otra (padre) para extender su funcionalidad. En C# la herencia se define VB.NET usa la palabra clave Inherits POO y Sintaxis

Herencia Dos keywords que afectan la “posiblidad” de heredar desde una clase base. C# VB.NET POO y Sintaxis

Invocando el Constructor Base en C# El constructor “default” siempre invoca al constructor de la clase base POO y Sintaxis

Invocando el Constructor Base en VB.NET El constructor “default” siempre invoca al constructor de la clase base POO y Sintaxis

Protegiendo el Acceso a Miembros - C# “Publico” a las clases derivadas “Privado” a las clases externas No puede ser usado en estructuras POO y Sintaxis

Protegiendo el Acceso a Miembros - VB.NET “Publico” a las clases derivadas “Privado” a las clases externas No puede ser usado en estructuras POO y Sintaxis

Laboratorio Clases y Herencia

Interfaces: Implementación C#: declaradas mediante palabra interfase VB.net usa palabras Interfase / End Interfase Una interfase define un contrato. Una clase o estructura que implementa una interfase se adhiere a ese contrato. Una interfase puede heredar de varias interfaces base, y una clase o estructura puede implementar varias interfaces. Las interfaces pueden contener métodos, propiedades, eventos e indexadores. Por si misma no provee implementaciones para los miembros que define. Solamente especifica los miembros que deben ser suministrados por las clases que la implementan. En C#, las implementaciones se definen siguiendo al nombre de la clase por un :, en VB.NET, debe utilizarse Implements POO y Sintaxis

Interfaces Los métodos son implícitamente públicos Los métodos no tienen implementación No se declaran “access modifiers” Estándar  Se les agrega el prefijo “I” POO y Sintaxis

Métodos de las Interfaces Una clase puede implementar cero, una o más interfaces Deben de implementarse todos los métodos heredados por la interface Las interfaces a su vez pueden heredar de múltiples interfaces POO y Sintaxis

Implementando métodos de una Interfase (implícitamente) – C# Escribe el método exactamente de la misma forma que el método de la interfase Tienen el mismo: tipo de retorno, nombre y parámetros. El método implementado puede ser virtual o no virtual NOTAS (from MSDN) C# Language Reference virtual (C# Reference) The virtual keyword is used to modify a method, property, indexer or event declaration, and allow it to be overridden in a derived class. For example, this method can be overridden by any class that inherits it: public virtual double Area() { return x * y; } The implementation of a virtual member can be changed by an overriding member in a derived class. For more information on using the virtual keyword, see Versioning with the Override and New Keywords (C# Programming Guide) and Knowing When to Use Override and New Keywords (C# Programming Guide). Remarks When a virtual method is invoked, the run-time type of the object is checked for an overriding member. The overriding member in the most derived class is called, which might be the original member, if no derived class has overridden the member. By default, methods are non-virtual. You cannot override a non-virtual method. You cannot use the virtual modifier with the static, abstract, private or override modifiers. Virtual properties behave like abstract methods, except for the differences in declaration and invocation syntax. It is an error to use the virtual modifier on a static property. A virtual inherited property can be overridden in a derived class by including a property declaration that uses the override modifier. Example In this example, the class Dimensions contains the two coordinates x, y, and the Area() virtual method. Different shape classes such as Circle, Cylinder, and Sphere inherit the Dimensions class, and the surface area is calculated for each figure. Each derived class has it own override implementation of Area(). The program calculates and displays the proper area for each figure by invoking the proper implementation of Area() according to the object associated with the method. Notice that the inherited classes Circle, Sphere, and Cylinder are all using constructors that initialize the base class, for example: POO y Sintaxis

Invocando métodos de una Interfase (implícitamente) – C# Puede ser invocada directamente a través de una clase o estructura. Puede realizarse un “cast” al tipo de la interfase. POO y Sintaxis

Implementando métodos de una Interfase (explícitamente) – C# Debe usarse el nombre completo del método para su acceso No puede ser declarada como virtual ni especificar un “access modifier” Solo puede ser accesado a través de la interfase POO y Sintaxis

Invocando Métodos de una Interfase (explícitamente) – C# No puede ser invocado de forma directa No es parte pública de una clase Debe ser aplicado un “cast” al tipo de la interfase y llamado desde el tipo de la interfase NOTA: El “cast” aplicado a estructuras se lo conoce como operación de “boxing” POO y Sintaxis

Ventajas Implementación Explícita Permite que la implementación de la interfase sea excluida de la cara pública de la clase o estructura Resuelve conflictos de nombre POO y Sintaxis

Implementando métodos de una Interfase - VB.NET POO y Sintaxis

Invocando Métodos de una Interfase – VB.NET Si fue declarada pública puede ser invocada de forma directa Si fue declarada como privada deberá ser invocada a través de un “cast” al tipo de la interfase POO y Sintaxis

Clases Abstractas Proveen una implementación parcial para que sea heredada por las clases derivadas No pueden ser instanciadas Utiliza el calificador abstract en C# Use MustInherit keyword in VB.NET POO y Sintaxis

Clases Abstractas – C# POO y Sintaxis «interface» ITransporte Colectivo <<Concrete>> <<Concrete>> POO y Sintaxis

Clases Abstractas – VB.NET «interface» ITransporte Transporte { abstract } Taxi Colectivo <<Concrete>> <<Concrete>> POO y Sintaxis

Métodos Abstractos Solo en clases abstractas No pueden contener implementación Deben ser implementados por las clases derivadas Utiliza el calificador abstract en C# Utiliza MustOverride en VB.NET Son virtuales Pueden sobrescribir métodos de la clase base declarados como virtuales Pueden sobrescribir métodos de la clase base declarados como “override” POO y Sintaxis

Métodos Estáticos Miembros que no requieren de una instancia para ser invocados C# VB.NET En teoría de Paradigmas de Programación Orientada a Objetos se lo conoce también como Métodos de Clase POO y Sintaxis

Laboratorio Integrando conceptos Class Designer

Diseñador de Clases Class Designer

Diseñador de Clases: Usos Entender el código existente Diseñar las clases Revisar y modificar código Generar diagramas para documentación ¿Por qué usar Class Designer? -Permite entender el código existente: El código existente puede ser complicado y confuso de entender. Con un diseñador de clases visual, es posible explorar de manera gráfica la jerarquía de clases y comprender como las clases se relacionan entre si -Diseño de clases: El diseñador de clases visual permite crear gráficamente el diseño y la implementación en alto nivel del software -Revisar y refactorizar el código: Un diseñador visual de clases es una herramienta poderosa para revisión y refactorización de código. Los diagramas existentes pueden ser revisados y refactorizados, ganando tiempo. -Diagramas de clases para documentación: Los diagramas de clases pueden ser utilizados para documentar las jerarquías de clases existentes, mostrando de manera gráfica la herencia. Los diagramas de clases también son útiles para comunicar ideas en grupos de trabajo Class Designer

Diseñador de Clases: Características Refleja el archivo de código fuente relacionado El diagrama es una vista del código Almacenado a nivel de proyecto Soporta herencia Soporta asociaciones Soporta enums y structs El Class Designer de Visual Studio es un entorno de diseño visual para la CLR. Permite visualizar estructuras de clases y otros tipos, y a través de esas representaciones visuales, editar el código fuente. Los cambios realizados a los diagramas de clase se reflejan en el código y los cambios hechos en código, se reflejan en el diagrama de clases. Esta relación sincrónica entre código y diseñador hace mas fácil crear y configurar tipos complejos. El Class Designer contiene características diseñadas específicamente para ayudar en la refactorización de código así como también permite renombrar de manera sencilla identificadores y sobrescribir métodos. Es posible generar de manera automática clases y estructuras, e implementar interfaces automáticamente. Class Designer

Diseñador de Clases: Elementos Elementos del designer Class Enum Interface Abstract Class Struct Delegate Inheritance Association Comment Para agregar un nuevo diagrama de clases (class diagram), seleccionar la opción “Agregar un nuevo Ítem” del proyecto en el que se desea agregar el diagrama. Aparecerá el cuadro de diálogo, allí se debe seleccionar la opción “Class Diagram”. Se deberá asignar un nombre al diagrama. Luego aparecerá como un ítem mas del proyecto. Para diseñar el diagrama de clases basta simplemente con arrastrar y soltar los distintos elementos en el área de diseño. Estos elementos son: Class Enum Interface Abstract Class Struct Delegate Inheritance Association Comment Class Designer

Class Designer: Agregando una clase Para agregar una nueva clase, se debe seleccionar el ítem Class de la ToolBox y arrastrarlo sobre el área de diseño. Automáticamente se abrirá una ventana en la que se debe ingresar el nombre de la clase, la accesibilidad (publica, privada, protegida), y el nombre del archivo donde la clase debe ser generada en código, pudiéndose especificar uno nuevo o utilizando uno ya existente. Por defecto, el Namespace donde se generará la clase es el nombre del proyecto donde se agrega. De todas formas, es posible modificarlo posteriormente. Desde la solapa “Class Details”, una vez generada la clase es posible declararle los Métodos, Atributos, Propiedades y Eventos, aclarando tipos, valores de retorno, parámetros y alcance, en caso de que corresponda. Estos también son sincronizados automáticamente con el código. Al hacer doble click en el elemento creado, el designer nos lleva automáticamente a la porción de código que se creo. Se observa que la declaración de los métodos, arroja una excepción de tipo “NotImplemented” para alertar, en tiempo de ejecución, que se esta invocando a un método que aún no ha sido implementado. Las posibilidades del class designer están ligadas completamente con el Refactoring. Si bien se verá el concepto mas adelante, este permite, por ejemplo, luego de declarar un atributo, solicitar a la IDE que implemente la property correspondiente para obtener accesibilidad. El resto de las estructuras, como Interfaces y Structs, se trabajan de la misma forma que las clases. La herramienta “Inheritance” permite hacer que una clase herede de otra o bien que una clase implemente una interfase. Class Designer

Diseñador de Clases Implementando una Interfase Visualizando la jerarquía de clases Implementando una Interfase El class designer permite hacer fácil la implementación de interfases en las clases. De hecho, si la interfase se muestra en el class designer, es posible implementarla utilizando el mismo procedimiento que se utiliza para realizar una herencia, dibujando la línea de herencia desde la clase a la interfase. Si la interfase no se muestra en el class designer, de todas formas es posible implementarla arrastrando la interfase desde el visor de clases a la clase que se quiere implementar. Los métodos son generados de manera automática. Una vez implementado, se necesita agregar la implementación especifica mediante el Code Editor. Visualizando la jerarquía de herencia Es posible utilizar el Class Designer para visualizar la jerarquía de herencia en un proyecto. Para mostrar la clase base de una clase heredera, es necesario hacer click derecho en el área de encabezado y seleccionar la opción “Show Base Class”. La clase base será agregada al diagrama. Para mostrar clases que heredan de una clase existente, se debe hacer click derecho sobre el área de encabezado de la clase y seleccionar “Show Derived Types”. Las clases derivadas se mostrarán en el designer. Class Designer

Laboratorio Diseñador de Clases Class Designer

Resumen POO POO en Net Diseñados de Clases Clases y Objetos Constructores y Destructores Métodos y Atributos Abstracción y Encapsulamiento Herencia Simple y Múltiple e Interfaces Polimorfismo Ocultamiento Clases Abstractas y Métodos Virtuales Clases Parciales (Partial Classes) POO en Net Diseñados de Clases