Upload
demetrio-alamillo
View
4
Download
1
Embed Size (px)
Citation preview
Unidad 3Unidad 3Lenguajes .Net
y POOLenguajes .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)
¿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
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
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
¿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
Pilares de POOPilares de POOP
OO
PO
O
PolimorfismoPolimorfismoHerenciaHerencia
AbstracciónAbstracción
EncapsulamientoEncapsulamiento
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
EncapsulamientoEncapsulamientoP
OO
PO
O
Acelera()
velocidad
Frena()
125 km/h
40 km/h
300 km/h
¿Por qué usar Encapsulamiento?¿Por qué usar Encapsulamiento?
• ControlControl
• CambiosCambios
• ControlControl
• CambiosCambios
PO
OP
OO
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
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
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
Jerarquía de Clases – Ejemplo IIJerarquía de Clases – Ejemplo IIP
OO
PO
O
Cuentas
Cuenta Corriente Caja Ahorro
Común Sueldo
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
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>>
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
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
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
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
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
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
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
LaboratorioLaboratorio•Creando Clases
Cla
ss D
esig
ne
rC
lass
Des
ign
er
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
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
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
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
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
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
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
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
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
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
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
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
LaboratorioLaboratorio•Clases y Herencia
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
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
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
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
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
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
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
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
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
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
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
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>>
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>>
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
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
LaboratorioLaboratorio•Integrando conceptos
Cla
ss D
esig
ne
rC
lass
Des
ign
er
Diseñador de ClasesDiseñador de ClasesC
lass
Des
ign
er
Cla
ss D
esig
ne
r
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
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
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
Class Designer: Agregando una claseClass Designer: Agregando una claseC
lass
Des
ign
er
Cla
ss D
esig
ne
r
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
LaboratorioLaboratorio•Diseñador de Clases
Cla
ss D
esig
ne
rC
lass
Des
ign
er
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