Herencia en C#.

Slides:



Advertisements
Presentaciones similares
Programación orientada a objetos en Visual Basic .NET
Advertisements

Métodos y parámetros.
Unidad 3 Lenguajes .Net y POO
Curso de java básico (scjp)
Curso de java básico (scjp)
FUNDAMENTALS OF THE JAVA PROGRAMMING LANGUAGE
Curso de Java Capitulo 7: Conceptos sobre poo Profesor:
POLIMORFISMO UNIDAD 4.
Fundamentos de la programación orientada a objetos
Lenguaje de programación Java
Clases Extendidas La clase extendida hereda los campos y métodos de la clase de la cual extiende. La clase original se conoce como superclase y la clase.
Arquitectura CLARO-TECNOTREE
Orientación a Objetos con Java SE
La Programación Orientado a Objetos
1.1 Concepto de Tipo de Datos Abstracto.
Inner classes CAPITULO 8.
Informática II Prof. Dr. Gustavo Patiño MJ
UNIVERSIDAD LATINA (UNILA)
Aplicación del paradigma orientado a objetos
Diseño y programación de
PROGRAMACION ORIENTADA A OBJETOS
Encapsulamiento y Abstracción
Programación Orientada a Objetos en Java
Clase IV Delio Alanis.
HERENCIA.
Tema 7: Polimorfismo Antonio J. Sierra. Índice Introducción. Sobrecarga de métodos. Objetos como parámetros. Paso de argumentos. Devolución de objetos.
Herencia e Interfaces.
Modificadores.
TALLER DE PROGRAMACIÓN III
Herencia y Polimorfismo en JAVA
Polimorfismo Lenguajes de Programación II Corporación Universitaria del Caribe CECAR.
Lic. Rosemary Torrico Bascopé
Abstracción de los datos y Orientación a Objeto Clase 13.
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.
Tema 6: Clases Antonio J. Sierra.
Tema 10: Interfaces Antonio J. Sierra.
1 Herencia en Java Agustín J. González Diseño y Programación Orientados a Objetos.
1 Interfaces Agustín J. González ELO Introducción En C++ se permite la herencia múltiple; es decir, es posible derivar una clase de dos o más clases.
UNIDAD 2 CLASES Y OBJETOS. CLASE Elementos cabecera y cuerpo de la clase. Cabecera: aporta información fundamental sobre la clase en sí y constituye de.
Jerarquía de Clases: Herencia, Composición y Polimorfismo
Material de apoyo Unidad 2 Fundamentos de programación
Capitulo # 4 herencia PROGRAMACION III UNIVERSIDAD
Patrones Creacionales
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Encapsulamiento.
UNIDAD VI Recursos esenciales de Java LSC. Natalia Rodríguez Castellón.
SCJP SUN CERTIFIED PROGRAMMER FOR JAVA 6
Metodología de Programación Ayudantía 5 lelagos.ublog.cl 2009.
Informatica II1 Clases Extendidas La clase extendida hereda los campos y métodos de la clase que ha sido extendida. La clase original se conoce como superclase.
1 Herencia en Java Agustín J. González Diseño y Programación Orientados a Objetos.
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.
Unidad 2.1: INTRODUCCIÓN A LA ORIENTACIÓN A OBJETOS.
Detalles Generales sobre Java
SCJP SUN CERTIFIED PROGRAMMER FOR JAVA 6. SCJP 6.0 SEMANA SEIS DESARROLLO, INNER CLASSES.
Interfaces y Clases Internas
Herencia y Clases Abstractas
1 Interfaces Agustín J. González ELO Introducción En C++ se permite la herencia múltiple; es decir, es posible derivar una clase de dos o más clases.
:: Prof. Yeniffer Peña Programación I Programación Orientada a Objetos Presentación.
Clases “ Es una Abstracción de un elemento del mundo real ”
Herencia en C++ Agustín J. González ELO329. Diseño y Programación Orientados a Objetos 2 Motor ElectricMotor Motor y ElectricMotor Consideremos dos clases.
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.
Estructuras de control selectivas Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión Práctica 3.
LICETH CAJAS 3RO ASI 26/10/2010. Es un lenguaje de programación diseñado para crear una amplia gama de aplicaciones que se ejecutan en.NET Framework,
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.
2 Historia. El perfil de Java. Los padres de Java son James Gosling (emacs) y Bill Joy (Sun) Java desciende de un lenguaje llamado Oak cuyo propósito era.
Concepto de Tipo y Subtipo Diseño e Implementación Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Unidad Didáctica 10 Versión.
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.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Herencia.
Programación en Java Introducción a Java. Reseña histórica Surge en 1991 por Sun Microsystems Desarrollado para electrodomésticos Se buscaba un código.
Herencia en C#.
Transcripción de la presentación:

Herencia en C#

Notas generales Derivación de clases Implementación de métodos Uso de clases selladas Uso de interfaces Uso de clases abstractas

Derivación de clases Extensión de clases base Acceso a miembros de la clase base Llamadas a constructores de la clase base

Extensión de clases base Sintaxis para derivar una clase desde una clase base Una clase derivada hereda la mayor parte de los elementos de su clase base Una clase derivada no puede ser más accesible que su clase base class Token { ... } class ComentToken: Token Token « concrete » Clase derivada Clase base ComentToken « concrete » 2 puntos

Acceso a miembros de la clase base class Token { ... class Outside protected string name; { } void Fails(Token t) class ComentToken: Token { { ... ... public string Name( ) t.name { ... return name; } } } } Los miembros heredados con protección están implícitamente protegidos en la clase derivada Los miembros de una clase derivada sólo pueden acceder a sus miembros heredados con protección En una struct no se usa el modificador de acceso protected û 

Llamadas a constructores de la clase base Las declaraciones de constructores deben usar la palabra base Una clase derivada no puede acceder a un constructor privado de la clase base Se usa la palabra base para habilitar el ámbito del identificador class Token { protected Token(string name) { ... } ... } class ComentToken: Token public ComentToken(string name) : base(name) { }

Implementación de métodos Definición de métodos virtuales Uso de métodos virtuales Sustitución de métodos (override) Uso de métodos override Uso de new para ocultar métodos Uso de la palabra reservada new

Definición de métodos virtuales Sintaxis: Se declara como virtual Los métodos virtuales son polimórficos class Token { ... public int LineNumber( ) { ... } public virtual string Name( )

Uso de métodos virtuales Para usar métodos virtuales: No se puede declarar métodos virtuales como estáticos No se puede declarar métodos virtuales como privados

Sustitución de métodos (override) Sintaxis: Se usa la palabra reservada override class Token { ... public virtual string Name( ) { ... } } class ComentToken: Token public override string Name( ) { ... }

Uso de métodos override Sólo se sustituyen métodos virtuales heredados idénticos Un método override debe coincidir con su método virtual asociado Se puede sustituir un método override No se puede declarar explícitamente un override como virtual No se puede declarar un método override como static o private class Token { ... public int LineNumber( ) { ... } public virtual string Name( ) { ... } } class ComentToken: Token public override int LineNumber( ) { ... } public override string Name( ) { ... } û 

Uso de new para ocultar métodos Sintaxis: Para ocultar un método se usa la palabra reservada new class Token { ... public int LineNumber( ) { ... } } class ComentToken: Token new public int LineNumber( ) { ... }

Uso de la palabra reservada new Ocultar tanto métodos virtuales como no virtuales Resolver conflictos de nombre en el código Ocultar métodos que tengan signaturas idénticas class Token { ... public int LineNumber( ) { ... } public virtual string Name( ) { ... } } class ComentToken: Token new public int LineNumber( ) { ... } public override string Name( ) { ... }

û Uso de clases selladas Ninguna clase puede derivar de una clase sellada Las clases selladas sirven para optimizar operaciones en tiempo de ejecución Muchas clases de .NET Framework son selladas: String, StringBuilder, etc. Sintaxis: Se usa la palabra reservada sealed namespace System { public sealed class String ... } namespace Mine class FancyString: String { ... } û

Uso de interfaces Declaración de interfaces Implementación de varias interfaces Implementación de métodos de interfaz

Declaración de interfaces Sintaxis: Para declarar métodos se usa la palabra reservada interface Los nombres de interfaces empiezan con “I”mayúscula interface IToken { int LineNumber( ); string Name( ); } IToken « interface » LineNumber( ) Name( ) Sin espec. de acceso Métodos sin cuerpo

Implementación de varias interfaces Una clase puede implementar cero o más interfaces Una interfaz puede extender cero o más interfaces Una clase puede ser más accesible que sus interfaces base Una interfaz no puede ser más accesible que su interfaz base Una clase implementa todos los métodos de interfaz heredados interface IToken { string Name( ); } interface IVisitable void Accept(IVisitante v); class Token: IToken, IVisitable { ... IToken « interface » IVisitable « interface » Token « concrete »

Implementación de métodos de interfaz El método que implementa debe ser igual que el método de interfaz El método que implementa puede ser virtual o no virtual class Token: IToken, IVisitable { public virtual string Name( ) { ... } public void Accept(IVisitante v) Mismo acceso Mismo retorno Mismo nombre Mismos parámetros

Uso de clases abstractas Declaración de clases abstractas Uso de clases abstractas en una jerarquía de clases Comparación de clases abstractas e interfaces Implementación de métodos abstractos Uso de métodos abstractos

Declaración de clases abstractas Se usa la palabra reservada abstract abstract class Token { ... } class Test static void Main( ) new Token( ); Token { abstract } û No se pueden crear instancias de una clase abstracta

Uso de clases abstractas en una jerarquía de clases Ejemplo 1 interface IToken { string Name( ); } abstract class Token: IToken string IToken.Name( ) { ... ... class ComentToken: Token class KeywordToken: Token Token { abstract } IToken « interface » Coment « concrete » Keyword

Uso de clases abstractas en una jerarquía de clases (cont.) Ejemplo 2 interface IToken { string Name( ); } abstract class Token public virtual string Name( ) { ... ... class ComentToken: Token, IToken class KeywordToken: Token, IToken Token { abstract } IToken « interface » Coment « concrete » Keyword

Comparación de clases abstractas e interfaces Parecidos No se pueden crear instancias de ninguna de ellas No se puede sellar ninguna de ellas Diferencias Las interfaces no pueden contener implementaciones Las interfaces no pueden declarar miembros no públicos Las interfaces no pueden extender nada que no sea una interfaz

Implementación de métodos abstractos Sintaxis: Se usa la palabra reservada abstract Sólo clases abstractas pueden declarar métodos abstractos Los métodos abstractos no pueden tener cuerpo abstract class Token { public virtual string Name( ) { ... } public abstract int Longitud( ); } class ComentToken: Token public override string Name( ) { ... } public override int Longitud( ) { ... }

Uso de métodos abstractos Los métodos abstractos son virtuales Los métodos override pueden sustituir a métodos abstractos en otras clases derivadas Los métodos abstractos pueden sustituir a métodos de la clase base declarados como virtuales Los métodos abstractos pueden sustituir a métodos de la clase base declarados como override

Práctica – Uso de herencia para implementar una interfaz