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

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

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

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

Unidad 3Unidad 3Lenguajes .Net

y POOLenguajes .Net

y POO

[UTN - Tecnologías de desarrollo de software IDE][2008]

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

ContenidosContenidos

• 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)

• 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)

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

¿Qué es la Programación Orientada a Objetos?¿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.

• 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.

PO

OP

OO

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

ClasesClases

• 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)

• 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)

PO

OP

OO

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

Constructor y DestructorConstructor 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

• 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

PO

OP

OO

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

¿Qué es un objeto?¿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ónFijaVariable

• 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ónFijaVariable

PO

OP

OO

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

Pilares de POOPilares de POOP

OO

PO

O

PolimorfismoPolimorfismoHerenciaHerencia

AbstracciónAbstracción

EncapsulamientoEncapsulamiento

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

AbstracciónAbstracción

• Ignorancia selectivaIgnorancia selectiva

• Decide que es importante y que no lo esDecide que es importante y que no lo es

• Se enfoca [depende] en lo que es Se enfoca [depende] en lo que es importanteimportante

• Ignora [no depende] de lo que no es Ignora [no depende] de lo que no es importanteimportante

• Utiliza la encapsulación para reforzar la Utiliza la encapsulación para reforzar la abstracciónabstracción

• Ignorancia selectivaIgnorancia selectiva

• Decide que es importante y que no lo esDecide que es importante y que no lo es

• Se enfoca [depende] en lo que es Se enfoca [depende] en lo que es importanteimportante

• Ignora [no depende] de lo que no es Ignora [no depende] de lo que no es importanteimportante

• Utiliza la encapsulación para reforzar la Utiliza la encapsulación para reforzar la abstracciónabstracción

PO

OP

OO

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

EncapsulamientoEncapsulamientoP

OO

PO

O

Acelera()

velocidad

Frena()

125 km/h

40 km/h

300 km/h

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

¿Por qué usar Encapsulamiento?¿Por qué usar Encapsulamiento?

• ControlControl

• CambiosCambios

• ControlControl

• CambiosCambios

PO

OP

OO

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

EncapsulamientoEncapsulamiento

• Métodos públicos: accesibles desde afueraMétodos públicos: accesibles desde afuera

• Métodos privados: accesibles desde adentroMétodos privados: accesibles desde adentro

• Métodos públicos: accesibles desde afueraMétodos públicos: accesibles desde afuera

• Métodos privados: accesibles desde adentroMétodos privados: accesibles desde adentro

PO

OP

OO

Acelera()

velocidad

Frena()

Controlador del Motor

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

HerenciaHerencia

• Es una relaciónEs una relación “un tipo de” entre clases “un tipo de” entre clases

• Va de la generalización a la especializaciónVa de la generalización a la especialización

• Clase Base / Clase DerivadaClase Base / Clase Derivada

• Hereda la implementaciónHereda la implementación

• Es una relaciónEs una relación “un tipo de” entre clases “un tipo de” entre clases

• Va de la generalización a la especializaciónVa de la generalización a la especialización

• Clase Base / Clase DerivadaClase Base / Clase Derivada

• Hereda la implementaciónHereda la implementación

PO

OP

OO

Automóvil

Transporte

Acelera

Frena

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

Jerarquías de Clases – Ejemplo IJerarquías de Clases – Ejemplo IP

OO

PO

O

Transporte

Marítimo Aire Nieve Tierra

DentroAtmosfera FueraAtmosfera 1-Persona N-Personas

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

Jerarquía de Clases – Ejemplo IIJerarquía de Clases – Ejemplo IIP

OO

PO

O

Cuentas

Cuenta Corriente Caja Ahorro

Común Sueldo

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

Herencia Simple y MúltipleHerencia Simple y Múltiple

• Simple: La clase hija deriva de una única Simple: La clase hija deriva de una única clase padreclase padre

• Múltiple: La clase hija deriva de varias Múltiple: La clase hija deriva de varias clases padreclases padre No es soportada por todos los lenguajesNo es soportada por todos los lenguajes Puede ser confusaPuede ser confusa

• Simple: La clase hija deriva de una única Simple: La clase hija deriva de una única clase padreclase padre

• Múltiple: La clase hija deriva de varias Múltiple: La clase hija deriva de varias clases padreclases padre No es soportada por todos los lenguajesNo es soportada por todos los lenguajes Puede ser confusaPuede ser confusa

PO

OP

OO

1-Persona Terrestre

Nieve

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

Clases AbstractasClases Abstractas

• Proveen una implementación parcial para Proveen una implementación parcial para que sea heredada por las clases derivadasque sea heredada por las clases derivadas

• No pueden ser instanciadasNo pueden ser instanciadas

• Proveen una implementación parcial para Proveen una implementación parcial para que sea heredada por las clases derivadasque sea heredada por las clases derivadas

• No pueden ser instanciadasNo pueden ser instanciadas

PO

OP

OO

Transporte{ abstract }

Taxi<<Concrete>>

Colectivo<<Concrete>>

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

Métodos AbstractosMétodos Abstractos

• Solo en clases abstractasSolo en clases abstractas• No pueden contener implementaciónNo pueden contener implementación• Deben ser implementados por las clases Deben ser implementados por las clases

derivadasderivadas• Los métodos abstractos son virtualesLos métodos abstractos son virtuales• Los métodos abstractos pueden sobrescribir Los métodos abstractos pueden sobrescribir

métodos de la clase base declarados como métodos de la clase base declarados como virtualesvirtuales

• Los métodos abstractos pueden sobrescribir Los métodos abstractos pueden sobrescribir métodos de la clase base declarados como métodos de la clase base declarados como “override”“override”

• Solo en clases abstractasSolo en clases abstractas• No pueden contener implementaciónNo pueden contener implementación• Deben ser implementados por las clases Deben ser implementados por las clases

derivadasderivadas• Los métodos abstractos son virtualesLos métodos abstractos son virtuales• Los métodos abstractos pueden sobrescribir Los métodos abstractos pueden sobrescribir

métodos de la clase base declarados como métodos de la clase base declarados como virtualesvirtuales

• Los métodos abstractos pueden sobrescribir Los métodos abstractos pueden sobrescribir métodos de la clase base declarados como métodos de la clase base declarados como “override”“override”

PO

OP

OO

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

Métodos VirtualesMétodos Virtuales

• Es un método que la clase base permite que Es un método que la clase base permite que sea sobrescrito en una clase derivadasea sobrescrito en una clase derivada

• Un método no-virtual es la UNICA Un método no-virtual es la UNICA implementación posible para este métodoimplementación posible para este método

• Es un método que la clase base permite que Es un método que la clase base permite que sea sobrescrito en una clase derivadasea sobrescrito en una clase derivada

• Un método no-virtual es la UNICA Un método no-virtual es la UNICA implementación posible para este métodoimplementación posible para este método

PO

OP

OO

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

InterfasesInterfases

• Definen un “contrato”Definen un “contrato”

• Contienen solo métodos sin implementaciónContienen solo métodos sin implementación

• No heredan atributosNo heredan atributos

• No se pueden crear instancias de una No se pueden crear instancias de una interfaseinterfase

• Las clases derivadas deben de implementar Las clases derivadas deben de implementar todas las operaciones heredadastodas las operaciones heredadas

• Definen un “contrato”Definen un “contrato”

• Contienen solo métodos sin implementaciónContienen solo métodos sin implementación

• No heredan atributosNo heredan atributos

• No se pueden crear instancias de una No se pueden crear instancias de una interfaseinterfase

• Las clases derivadas deben de implementar Las clases derivadas deben de implementar todas las operaciones heredadastodas las operaciones heredadas

PO

OP

OO

ITransportable

Acelera

Frena

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

InterfasesInterfases

• Una clase puede implementar cero, una o Una clase puede implementar cero, una o más interfasesmás interfases

• Deben de implementarse todos los métodos Deben de implementarse todos los métodos heredados por la interfaseheredados por la interfase

• Las interfases a su vez pueden heredar de Las interfases a su vez pueden heredar de múltiples interfasesmúltiples interfases

• Una clase puede implementar cero, una o Una clase puede implementar cero, una o más interfasesmás interfases

• Deben de implementarse todos los métodos Deben de implementarse todos los métodos heredados por la interfaseheredados por la interfase

• Las interfases a su vez pueden heredar de Las interfases a su vez pueden heredar de múltiples interfasesmúltiples interfases

PO

OP

OO

System.String

Object IEnumerable IConvertible IComparable IClonable

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

Polimorfismo - DefiniciónPolimorfismo - Definición

• Dos o más objetos son polimórficos con Dos o más objetos son polimórficos con respecto a un conjunto de mensajes, si respecto a un conjunto de mensajes, si todos ellos pueden responder a esos todos ellos pueden responder a esos mensajes, aún cuando cada uno lo haga de mensajes, aún cuando cada uno lo haga de un modo diferente.un modo diferente.

• Dos o más objetos son polimórficos con Dos o más objetos son polimórficos con respecto a un conjunto de mensajes, si respecto a un conjunto de mensajes, si todos ellos pueden responder a esos todos ellos pueden responder a esos mensajes, aún cuando cada uno lo haga de mensajes, aún cuando cada uno lo haga de un modo diferente.un modo diferente.

PO

OP

OO

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

PolimorfismoPolimorfismo

• La definición del método reside en la clase La definición del método reside en la clase basebase

• La implementación del método reside en la La implementación del método reside en la clase derivadaclase derivada

• La definición del método reside en la clase La definición del método reside en la clase basebase

• La implementación del método reside en la La implementación del método reside en la clase derivadaclase derivada

PO

OP

OO

CoheteAceleraFrena

Transporte

Acelera

Frena

AutoAceleraFrena

CaballoAceleraFrena

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

Sobrecarga de MétodosSobrecarga 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

• 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

PO

OP

OO

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

LaboratorioLaboratorio•Creando Clases

Cla

ss D

esig

ne

rC

lass

Des

ign

er

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

ClasesClasesClasesClases

• Clase: es la definición de las características Clase: es la definición de las características de un determinado tipo de objeto.de un determinado tipo de objeto.

• C#: son declaradas mediante classC#: son declaradas mediante class

• VB.NET: usa las palabras Class / End ClassVB.NET: usa las palabras Class / End Class

• Clase: es la definición de las características Clase: es la definición de las características de un determinado tipo de objeto.de un determinado tipo de objeto.

• C#: son declaradas mediante classC#: son declaradas mediante class

• VB.NET: usa las palabras Class / End ClassVB.NET: usa las palabras Class / End Class

PO

O y

Sin

taxi

sP

OO

y S

inta

xis

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

ConstructoresConstructores

• Constructor: funciones dentro de la clase, Constructor: funciones dentro de la clase, que son llamadas cuando se crea una que son llamadas cuando se crea una instancia de dicha clase.instancia de dicha clase.

• En C# tienen el mismo nombre de la claseEn C# tienen el mismo nombre de la clase

• VB.NET usa un procedimiento Sub NewVB.NET usa un procedimiento Sub New

• Constructor: funciones dentro de la clase, Constructor: funciones dentro de la clase, que son llamadas cuando se crea una que son llamadas cuando se crea una instancia de dicha clase.instancia de dicha clase.

• En C# tienen el mismo nombre de la claseEn C# tienen el mismo nombre de la clase

• VB.NET usa un procedimiento Sub NewVB.NET usa un procedimiento Sub New

PO

O y

Sin

taxi

sP

OO

y S

inta

xis

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

PropiedadesPropiedades

• Propiedad: característica o atributo de un Propiedad: característica o atributo de un objetoobjeto

• Propiedad: característica o atributo de un Propiedad: característica o atributo de un objetoobjeto

PO

O y

Sin

taxi

sP

OO

y S

inta

xis

C#C# C#C# VB.NETVB.NET VB.NETVB.NET

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

MétodosMétodos

• Métodos: acciones que un objeto puede Métodos: acciones que un objeto puede llevar a cabo.llevar a cabo.

• En C# todo método es una funciónEn C# todo método es una función

• VB.NET usa procedimientos Sub y VB.NET usa procedimientos Sub y funciones Functionfunciones Function

• Métodos: acciones que un objeto puede Métodos: acciones que un objeto puede llevar a cabo.llevar a cabo.

• En C# todo método es una funciónEn C# todo método es una función

• VB.NET usa procedimientos Sub y VB.NET usa procedimientos Sub y funciones Functionfunciones Function

PO

O y

Sin

taxi

sP

OO

y S

inta

xis

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

Sobrecarga de MétodosSobrecarga de Métodos

• Sobrecarga: varios métodos con el mismo Sobrecarga: varios métodos con el mismo nombre pero diferentes parámetros.nombre pero diferentes parámetros.

• C#C#

• VB.NETVB.NET

• Sobrecarga: varios métodos con el mismo Sobrecarga: varios métodos con el mismo nombre pero diferentes parámetros.nombre pero diferentes parámetros.

• C#C#

• VB.NETVB.NET

PO

O y

Sin

taxi

sP

OO

y S

inta

xis

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

NamespacesNamespaces

• Namespace: grupo de clases que tienen el Namespace: grupo de clases que tienen el mismo prefijomismo prefijo

• Namespace: grupo de clases que tienen el Namespace: grupo de clases que tienen el mismo prefijomismo prefijo

PO

O y

Sin

taxi

sP

OO

y S

inta

xis

C#C# C#C# VB.NETVB.NET VB.NETVB.NET

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

HerenciaHerencia

• Herencia: mecanismo por el cual una clase Herencia: mecanismo por el cual una clase (hija) hereda de otra (padre) para extender (hija) hereda de otra (padre) para extender su funcionalidad.su funcionalidad.

• En C# la herencia se defineEn C# la herencia se define

• VB.NET usa la palabra clave InheritsVB.NET usa la palabra clave Inherits

• Herencia: mecanismo por el cual una clase Herencia: mecanismo por el cual una clase (hija) hereda de otra (padre) para extender (hija) hereda de otra (padre) para extender su funcionalidad.su funcionalidad.

• En C# la herencia se defineEn C# la herencia se define

• VB.NET usa la palabra clave InheritsVB.NET usa la palabra clave Inherits

PO

O y

Sin

taxi

sP

OO

y S

inta

xis

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

HerenciaHerencia

• Dos keywords que afectan la “posiblidad” de Dos keywords que afectan la “posiblidad” de heredar desde una clase base.heredar desde una clase base.

• C#C#

• VB.NETVB.NET

• Dos keywords que afectan la “posiblidad” de Dos keywords que afectan la “posiblidad” de heredar desde una clase base.heredar desde una clase base.

• C#C#

• VB.NETVB.NET

PO

O y

Sin

taxi

sP

OO

y S

inta

xis

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

Invocando el Constructor Base en C#Invocando el Constructor Base en C#• El constructor “default” siempre invoca al

constructor de la clase base• El constructor “default” siempre invoca al

constructor de la clase base

PO

O y

Sin

taxi

sP

OO

y S

inta

xis

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

Invocando el Constructor Base en VB.NETInvocando el Constructor Base en VB.NET• El constructor “default” siempre invoca al

constructor de la clase base• El constructor “default” siempre invoca al

constructor de la clase base

PO

O y

Sin

taxi

sP

OO

y S

inta

xis

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

Protegiendo el Acceso a Miembros - C#Protegiendo el Acceso a Miembros - C#

• ““Publico” a las Publico” a las clases derivadasclases derivadas

• ““Privado” a las Privado” a las clases externasclases externas

• No puede ser No puede ser usado en usado en estructurasestructuras

• ““Publico” a las Publico” a las clases derivadasclases derivadas

• ““Privado” a las Privado” a las clases externasclases externas

• No puede ser No puede ser usado en usado en estructurasestructuras

PO

O y

Sin

taxi

sP

OO

y S

inta

xis

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

Protegiendo el Acceso a Miembros - VB.NETProtegiendo el Acceso a Miembros - VB.NET

• ““Publico” a las Publico” a las clases derivadasclases derivadas

• ““Privado” a las Privado” a las clases externasclases externas

• No puede ser No puede ser usado en usado en estructurasestructuras

• ““Publico” a las Publico” a las clases derivadasclases derivadas

• ““Privado” a las Privado” a las clases externasclases externas

• No puede ser No puede ser usado en usado en estructurasestructuras

PO

O y

Sin

taxi

sP

OO

y S

inta

xis

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

LaboratorioLaboratorio•Clases y Herencia

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

Interfaces: ImplementaciónInterfaces: Implementación

• C#: declaradas mediante palabra interfaseC#: declaradas mediante palabra interfase• C#: declaradas mediante palabra interfaseC#: declaradas mediante palabra interfase

PO

O y

Sin

taxi

sP

OO

y S

inta

xis

• VB.net usa palabras Interfase / End InterfaseVB.net usa palabras Interfase / End Interfase• VB.net usa palabras Interfase / End InterfaseVB.net usa palabras Interfase / End Interfase

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

InterfacesInterfaces

• Los métodos son implícitamente públicosLos métodos son implícitamente públicos

• Los métodos no tienen implementaciónLos métodos no tienen implementación

• No se declaran “access modifiers”No se declaran “access modifiers”

• Estándar Estándar Se les agrega el prefijo “I” Se les agrega el prefijo “I”

• Los métodos son implícitamente públicosLos métodos son implícitamente públicos

• Los métodos no tienen implementaciónLos métodos no tienen implementación

• No se declaran “access modifiers”No se declaran “access modifiers”

• Estándar Estándar Se les agrega el prefijo “I” Se les agrega el prefijo “I”

PO

O y

Sin

taxi

sP

OO

y S

inta

xis

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

Métodos de las InterfacesMétodos de las Interfaces

• Una clase puede implementar cero, una o Una clase puede implementar cero, una o más interfacesmás interfaces

• Deben de implementarse todos los métodos Deben de implementarse todos los métodos heredados por la interfaceheredados por la interface

• Las interfaces a su vez pueden heredar de Las interfaces a su vez pueden heredar de múltiples interfacesmúltiples interfaces

• Una clase puede implementar cero, una o Una clase puede implementar cero, una o más interfacesmás interfaces

• Deben de implementarse todos los métodos Deben de implementarse todos los métodos heredados por la interfaceheredados por la interface

• Las interfaces a su vez pueden heredar de Las interfaces a su vez pueden heredar de múltiples interfacesmúltiples interfaces

PO

O y

Sin

taxi

sP

OO

y S

inta

xis

System.String

Object IEnumerable IConvertible IComparable IClonable

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

Implementando métodos de una Interfase (implícitamente) – C#Implementando métodos de una Interfase (implícitamente) – C#• Escribe el método exactamente de la misma Escribe el método exactamente de la misma

forma que el método de la interfaseforma que el método de la interfase

• Tienen el mismo: tipo de retorno, nombre y Tienen el mismo: tipo de retorno, nombre y parámetros.parámetros.

• El método implementado puede ser virtual o El método implementado puede ser virtual o no virtualno virtual

• Escribe el método exactamente de la misma Escribe el método exactamente de la misma forma que el método de la interfaseforma que el método de la interfase

• Tienen el mismo: tipo de retorno, nombre y Tienen el mismo: tipo de retorno, nombre y parámetros.parámetros.

• El método implementado puede ser virtual o El método implementado puede ser virtual o no virtualno virtual

PO

O y

Sin

taxi

sP

OO

y S

inta

xis

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

Invocando métodos de una Interfase (implícitamente) – C#Invocando métodos de una Interfase (implícitamente) – C#• Puede ser invocada directamente a través Puede ser invocada directamente a través

de una clase o estructura.de una clase o estructura.

• Puede realizarse un “cast” al tipo de la Puede realizarse un “cast” al tipo de la interfase.interfase.

• Puede ser invocada directamente a través Puede ser invocada directamente a través de una clase o estructura.de una clase o estructura.

• Puede realizarse un “cast” al tipo de la Puede realizarse un “cast” al tipo de la interfase.interfase.

PO

O y

Sin

taxi

sP

OO

y S

inta

xis

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

Implementando métodos de una Interfase (explícitamente) – C#Implementando métodos de una Interfase (explícitamente) – C#• Debe usarse el nombre completo del Debe usarse el nombre completo del

método para su accesométodo para su acceso

• No puede ser declarada como virtual ni No puede ser declarada como virtual ni especificar un “access modifier”especificar un “access modifier”

• Solo puede ser accesado a través de la Solo puede ser accesado a través de la interfaseinterfase

• Debe usarse el nombre completo del Debe usarse el nombre completo del método para su accesométodo para su acceso

• No puede ser declarada como virtual ni No puede ser declarada como virtual ni especificar un “access modifier”especificar un “access modifier”

• Solo puede ser accesado a través de la Solo puede ser accesado a través de la interfaseinterfase

PO

O y

Sin

taxi

sP

OO

y S

inta

xis

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

Invocando Métodos de una Interfase (explícitamente) – C#Invocando Métodos de una Interfase (explícitamente) – C#• No puede ser invocado de forma directaNo puede ser invocado de forma directa

• No es parte pública de una claseNo es parte pública de una clase

• Debe ser aplicado un “Debe ser aplicado un “castcast” al tipo de la ” al tipo de la interfase y llamado desde el tipo de la interfase y llamado desde el tipo de la interfaseinterfase

• No puede ser invocado de forma directaNo puede ser invocado de forma directa

• No es parte pública de una claseNo es parte pública de una clase

• Debe ser aplicado un “Debe ser aplicado un “castcast” al tipo de la ” al tipo de la interfase y llamado desde el tipo de la interfase y llamado desde el tipo de la interfaseinterfase

PO

O y

Sin

taxi

sP

OO

y S

inta

xis

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

Ventajas Implementación ExplícitaVentajas 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

• Permite que la implementación de la interfase sea excluida de la cara pública de la clase o estructura

• Resuelve conflictos de nombre

PO

O y

Sin

taxi

sP

OO

y S

inta

xis

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

Implementando métodos de una Interfase - VB.NETImplementando métodos de una Interfase - VB.NET

PO

O y

Sin

taxi

sP

OO

y S

inta

xis

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

Invocando Métodos de una Interfase – VB.NETInvocando Métodos de una Interfase – VB.NET• Si fue declarada pública puede ser invocada Si fue declarada pública puede ser invocada

de forma directade forma directa

• Si fue declarada como privada deberá ser Si fue declarada como privada deberá ser invocada a través de un “cast” al tipo de la invocada a través de un “cast” al tipo de la interfaseinterfase

• Si fue declarada pública puede ser invocada Si fue declarada pública puede ser invocada de forma directade forma directa

• Si fue declarada como privada deberá ser Si fue declarada como privada deberá ser invocada a través de un “cast” al tipo de la invocada a través de un “cast” al tipo de la interfaseinterfase

PO

O y

Sin

taxi

sP

OO

y S

inta

xis

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

Clases AbstractasClases Abstractas

• Proveen una implementación parcial para Proveen una implementación parcial para que sea heredada por las clases derivadasque sea heredada por las clases derivadas

• No pueden ser instanciadasNo pueden ser instanciadas

• Utiliza el calificador abstract en C#Utiliza el calificador abstract en C#

• Use MustInherit keyword in VB.NETUse MustInherit keyword in VB.NET

• Proveen una implementación parcial para Proveen una implementación parcial para que sea heredada por las clases derivadasque sea heredada por las clases derivadas

• No pueden ser instanciadasNo pueden ser instanciadas

• Utiliza el calificador abstract en C#Utiliza el calificador abstract en C#

• Use MustInherit keyword in VB.NETUse MustInherit keyword in VB.NET

PO

O y

Sin

taxi

sP

OO

y S

inta

xis

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

Clases Abstractas – C#Clases Abstractas – C#P

OO

y S

inta

xis

PO

O y

Sin

taxi

s

«interface»ITransporte

Transporte{ abstract }

Taxi<<Concrete>>

Colectivo<<Concrete>>

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

Clases Abstractas – VB.NETClases Abstractas – VB.NETP

OO

y S

inta

xis

PO

O y

Sin

taxi

s

«interface»ITransporte

Transporte{ abstract }

Taxi<<Concrete>>

Colectivo<<Concrete>>

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

Métodos AbstractosMétodos Abstractos

• Solo en clases abstractasSolo en clases abstractas• No pueden contener implementaciónNo pueden contener implementación• Deben ser implementados por las clases Deben ser implementados por las clases

derivadasderivadas• Utiliza el calificador Utiliza el calificador abstractabstract en C# en C#• Utiliza Utiliza MustOverrideMustOverride en VB.NET en VB.NET• Son virtualesSon virtuales• Pueden sobrescribir métodos de la clase Pueden sobrescribir métodos de la clase

base declarados como virtualesbase declarados como virtuales• Pueden sobrescribir métodos de la clase Pueden sobrescribir métodos de la clase

base declarados como “override”base declarados como “override”

• Solo en clases abstractasSolo en clases abstractas• No pueden contener implementaciónNo pueden contener implementación• Deben ser implementados por las clases Deben ser implementados por las clases

derivadasderivadas• Utiliza el calificador Utiliza el calificador abstractabstract en C# en C#• Utiliza Utiliza MustOverrideMustOverride en VB.NET en VB.NET• Son virtualesSon virtuales• Pueden sobrescribir métodos de la clase Pueden sobrescribir métodos de la clase

base declarados como virtualesbase declarados como virtuales• Pueden sobrescribir métodos de la clase Pueden sobrescribir métodos de la clase

base declarados como “override”base declarados como “override”

PO

O y

Sin

taxi

sP

OO

y S

inta

xis

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

Métodos EstáticosMétodos Estáticos

• Miembros que no requieren de una instancia Miembros que no requieren de una instancia para ser invocadospara ser invocados

• C#C#

• VB.NETVB.NET

• Miembros que no requieren de una instancia Miembros que no requieren de una instancia para ser invocadospara ser invocados

• C#C#

• VB.NETVB.NET

PO

O y

Sin

taxi

sP

OO

y S

inta

xis

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

LaboratorioLaboratorio•Integrando conceptos

Cla

ss D

esig

ne

rC

lass

Des

ign

er

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

Diseñador de ClasesDiseñador de ClasesC

lass

Des

ign

er

Cla

ss D

esig

ne

r

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

Diseñador de Clases: UsosDiseñador de Clases: Usos

• Entender el código existente

• Diseñar las clases

• Revisar y modificar código

• Generar diagramas para documentación

• Entender el código existente

• Diseñar las clases

• Revisar y modificar código

• Generar diagramas para documentación

Cla

ss D

esig

ne

rC

lass

Des

ign

er

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

Diseñador de Clases: CaracterísticasDiseñ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

• 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

Cla

ss D

esig

ne

rC

lass

Des

ign

er

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

Diseñador de Clases: ElementosDiseñador de Clases: Elementos

• Elementos del designer Class Enum Interface Abstract Class Struct Delegate Inheritance Association Comment

• Elementos del designer Class Enum Interface Abstract Class Struct Delegate Inheritance Association Comment

Cla

ss D

esig

ne

rC

lass

Des

ign

er

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

Class Designer: Agregando una claseClass Designer: Agregando una claseC

lass

Des

ign

er

Cla

ss D

esig

ne

r

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

Diseñador de ClasesDiseñador de Clases

• Implementando una Interfase

• Visualizando la jerarquía de clases

• Implementando una Interfase

• Visualizando la jerarquía de clases

Cla

ss D

esig

ne

rC

lass

Des

ign

er

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

LaboratorioLaboratorio•Diseñador de Clases

Cla

ss D

esig

ne

rC

lass

Des

ign

er

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

ResumenResumen

• POO 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

• POO 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