Clase IV Delio Alanis. Agenda Conversión de tipos Conversión de tipos POO y Sintaxis POO y...

61
Clase IV Clase IV Delio Alanis Delio Alanis

Transcript of Clase IV Delio Alanis. Agenda Conversión de tipos Conversión de tipos POO y Sintaxis POO y...

Page 1: Clase IV Delio Alanis. Agenda Conversión de tipos Conversión de tipos POO y Sintaxis POO y Sintaxis  Clases, Métodos  Herencia y Constructores  Partial.

Clase IVClase IVDelio AlanisDelio Alanis

Page 2: Clase IV Delio Alanis. Agenda Conversión de tipos Conversión de tipos POO y Sintaxis POO y Sintaxis  Clases, Métodos  Herencia y Constructores  Partial.

AgendaAgenda

Conversión de tiposConversión de tipos POO y SintaxisPOO y Sintaxis

Clases, Métodos Clases, Métodos Herencia y ConstructoresHerencia y Constructores Partial ClassesPartial Classes OcultamientoOcultamiento Clases Abstractas e InterfacesClases Abstractas e Interfaces

Class DesignerClass Designer

Page 3: Clase IV Delio Alanis. Agenda Conversión de tipos Conversión de tipos POO y Sintaxis POO y Sintaxis  Clases, Métodos  Herencia y Constructores  Partial.

AgendaAgenda

Conversión de tiposConversión de tipos POO y SintaxisPOO y Sintaxis

Clases, Métodos Clases, Métodos Herencia y ConstructoresHerencia y Constructores Partial ClassesPartial Classes OcultamientoOcultamiento Clases Abstractas e InterfacesClases Abstractas e Interfaces

Class DesignerClass Designer

Page 4: Clase IV Delio Alanis. Agenda Conversión de tipos Conversión de tipos POO y Sintaxis POO y Sintaxis  Clases, Métodos  Herencia y Constructores  Partial.

Conversión de tiposConversión de tipos C# no permite conversiones implícitas de tiposC# no permite conversiones implícitas de tipos

Si falla el casting se devuelve null o InvalidCastExceptionSi falla el casting se devuelve null o InvalidCastException

VB.NET usa las directivas del compilador Option StrictVB.NET usa las directivas del compilador Option Strict Si falla el casting siempre se genera una InvalidCastExceptionSi falla el casting siempre se genera una InvalidCastException

Cuenta cta = new CtaCte();CtaCte cc = cta; //Error: puede que cta no sea una CtaCteCtaCte cc = (CtaCte)cta; //Conversion explicita “CASTING”CtaCte cc = cta as CtaCte; //Usando el operador “as”

if (cta is CtaCte) ... //Comp. con el operador “is”

Dim cta As Cuenta = New CtaCte()

Dim cc As CtaCte = cta ‘OK Option Strict OffDim cc As CtaCte = CType(cta, CtaCte) ‘Option Strict On

If TypeOf cta Is CtaCte Then ‘Comp. con TypeOf Is

Co

nve

rsió

n d

e ti

pos

Co

nve

rsió

n d

e ti

pos

Page 5: Clase IV Delio Alanis. Agenda Conversión de tipos Conversión de tipos POO y Sintaxis POO y Sintaxis  Clases, Métodos  Herencia y Constructores  Partial.

Conversión de tiposConversión de tipos .NET ofrece métodos para realizar las converciones, por ejemplo el .NET ofrece métodos para realizar las converciones, por ejemplo el

ToString() que todos los object tienen.ToString() que todos los object tienen.

VB.NET usa las directivas del compilador Option StrictVB.NET usa las directivas del compilador Option Strict Si falla el casting siempre se genera una InvalidCastExceptionSi falla el casting siempre se genera una InvalidCastException

int numero = 10; object obj; obj = numero; //boxingnumero = (int)obj; //unboxingstring valor = numero.ToString(); //Convierte int en cadena

Dim precio As String = “100.10”Dim otroPrecio As double = Convert.ToDouble(precio)

Dim numero As Long = 1000Dim numeroDouble As Double = CType(numero, Double)

Co

nve

rsió

n d

e ti

pos

Co

nve

rsió

n d

e ti

pos

Page 6: Clase IV Delio Alanis. Agenda Conversión de tipos Conversión de tipos POO y Sintaxis POO y Sintaxis  Clases, Métodos  Herencia y Constructores  Partial.

LaboratorioLaboratorio•Conversión de tipos y ExcepcionesConversión de tipos y Excepciones

Page 7: Clase IV Delio Alanis. Agenda Conversión de tipos Conversión de tipos POO y Sintaxis POO y Sintaxis  Clases, Métodos  Herencia y Constructores  Partial.

AgendaAgenda

Conversión de tiposConversión de tipos POO y SintaxisPOO y Sintaxis

Clases, Métodos Clases, Métodos Herencia y ConstructoresHerencia y Constructores Partial ClassesPartial Classes OcultamientoOcultamiento Clases Abstractas e InterfacesClases Abstractas e Interfaces

Class DesignerClass Designer

Page 8: Clase IV Delio Alanis. Agenda Conversión de tipos Conversión de tipos POO y Sintaxis POO y Sintaxis  Clases, Métodos  Herencia y Constructores  Partial.

EnumsEnums

C#: las estructuras se definen mediante enumC#: las estructuras se definen mediante enum

VB.NET usa enum / end enumVB.NET usa enum / end enum

//Definicion del enum diasenum Dias {lunes, martes, miercoles, jueves, viernes};

‘Definicion del enum diasenum Dias

lunes = 1martes = 2miercoles = 3jueves = 4viernes = 5

End Enum

Enum: Listas de datosEnum: Listas de datos

PO

O y

Sin

taxi

sP

OO

y S

inta

xis

Page 9: Clase IV Delio Alanis. Agenda Conversión de tipos Conversión de tipos POO y Sintaxis POO y Sintaxis  Clases, Métodos  Herencia y Constructores  Partial.

ClasesClases

C#: las clases son declaradas mediante classC#: las clases son declaradas mediante class

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

//Definicion de la clase CtaCteclass CtaCte{

//Definicion de miembros}

‘Definicion de la clase CtaCteClass CtaCte

‘Definicion de miembrosEnd Class

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

PO

O y

Sin

taxi

sP

OO

y S

inta

xis

Page 10: Clase IV Delio Alanis. Agenda Conversión de tipos Conversión de tipos POO y Sintaxis POO y Sintaxis  Clases, Métodos  Herencia y Constructores  Partial.

ConstructoresConstructores

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

VB.NETVB.NET usa un procedimiento usa un procedimiento Sub NewSub New VB.NETVB.NET usa un procedimiento usa un procedimiento Sub NewSub New

class CtaCte{ public CtaCte(){...} //Const. por default public CtaCte(int i){...} //Const. con un parametro}

Class CtaCte Sub New() End Sub Sub New(ByVal i As Integer) End Sub End Class

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

PO

O y

Sin

taxi

sP

OO

y S

inta

xis

Page 11: Clase IV Delio Alanis. Agenda Conversión de tipos Conversión de tipos POO y Sintaxis POO y Sintaxis  Clases, Métodos  Herencia y Constructores  Partial.

PropiedadesPropiedades

Propiedad: Propiedad: característica o atributo de un objetocaracterística o atributo de un objeto Propiedad: Propiedad: característica o atributo de un objetocaracterística o atributo de un objeto

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

class CtaCte{ int _balance; public int Balance { get { return _balance; } set { _balance = value; } }}

CtaCte cc = new CtaCte();cc.Balance = 100; //AsignaciónMostrar(cc.Balance); //Obtención

Class CtaCte Dim _balance As Integer Property Balance() As Integer Get Return _balance End Get Set (ByVal value As Integer) _balance = value End Set End PropertyEnd Class

Dim cc As New CtaCte()cc.Balance = 100 ‘AsignaciónMostrar(cc.Balance) ‘Obtención

PO

O y

Sin

taxi

sP

OO

y S

inta

xis

Page 12: Clase IV Delio Alanis. Agenda Conversión de tipos Conversión de tipos POO y Sintaxis POO y Sintaxis  Clases, Métodos  Herencia y Constructores  Partial.

MétodosMétodos

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

VB.NETVB.NET usa procedimientos usa procedimientos Sub Sub y funciones y funciones FunctionFunction VB.NETVB.NET usa procedimientos usa procedimientos Sub Sub y funciones y funciones FunctionFunction

public void HacerDeposito(int importe) //No devuelve valor{}

public int ObtenerInventario(int codArticulo) //Devuelve un entero{}

Public Sub HacerDeposito(ByVal importe As Integer)End Sub

Public Function Inventario(ByVal codArt As Integer) As IntegerEnd Function

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

PO

O y

Sin

taxi

sP

OO

y S

inta

xis

Page 13: Clase IV Delio Alanis. Agenda Conversión de tipos Conversión de tipos POO y Sintaxis POO y Sintaxis  Clases, Métodos  Herencia y Constructores  Partial.

Sobrecarga de MétodosSobrecarga de Métodos

C#C# C#C#

VB.NETVB.NET VB.NETVB.NET

public void HacerDeposito(int importe) {}

public void HacerDeposito(int importe, bool acreditar){}

Public Sub HacerDeposito(ByVal imp As Integer)End Sub

Public Sub HacerDeposito(ByVal imp As Integer, ByVal acreditar As Boolean)End Sub

Sobrecarga: varios métodos con el mismo nombre pero Sobrecarga: varios métodos con el mismo nombre pero diferentes parametros.diferentes parametros.

Sobrecarga: varios métodos con el mismo nombre pero Sobrecarga: varios métodos con el mismo nombre pero diferentes parametros.diferentes parametros.

PO

O y

Sin

taxi

sP

OO

y S

inta

xis

Page 14: Clase IV Delio Alanis. Agenda Conversión de tipos Conversión de tipos POO y Sintaxis POO y Sintaxis  Clases, Métodos  Herencia y Constructores  Partial.

NamespacesNamespaces

C#C# C#C# VB.NETVB.NET VB.NETVB.NETnamespace BancoARG{ namespace Gestion { public class CtaCte { } public class CajaAhorro { } }}

//Referencia “full”BancoARG.Gestion.CtaCte;BancoARG.Gestion.CajaAhorro;

//Referencia “corta”using BancoARG.Gestion;CtaCte cc = new CtaCte();CajaAhorro ca = new CajaAhorro();

Namespace BancoARG Namespace Gestion Public Class CtaCte End Class Public Class CajaAhorro End Class End NamespaceEnd Namespace

‘Referencia “full”BancoARG.Gestion.CtaCteBancoARG.Gestion.CajaAhorro

‘Referencia a un namespaceImports BancoARG.GestionDim cc As New CtaCte()Dim ca As New CajaAhorro()

Namespace: grupo de clases que tienen el mismo prefijoNamespace: grupo de clases que tienen el mismo prefijo Namespace: grupo de clases que tienen el mismo prefijoNamespace: grupo de clases que tienen el mismo prefijo

PO

O y

Sin

taxi

sP

OO

y S

inta

xis

Page 15: Clase IV Delio Alanis. Agenda Conversión de tipos Conversión de tipos POO y Sintaxis POO y Sintaxis  Clases, Métodos  Herencia y Constructores  Partial.

HerenciaHerencia

En C# la herencia se define:En C# la herencia se define: En C# la herencia se define:En C# la herencia se define:

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

class Cuenta //Clase Padre{ }class CtaCte : Cuenta //Clase Hija{ }

Class Cuenta ‘Clase PadreEnd Class

Class CtaCte ‘Clase Hija Inherits CuentaEnd Class

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

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

En .NET solose permiteHerenciaSimple

PO

O y

Sin

taxi

sP

OO

y S

inta

xis

Page 16: Clase IV Delio Alanis. Agenda Conversión de tipos Conversión de tipos POO y Sintaxis POO y Sintaxis  Clases, Métodos  Herencia y Constructores  Partial.

HerenciaHerenciaHerenciaHerencia

class MyBaseClass{}

class MyDerivedClass: MyBaseClass{}

Class MyBaseClassEnd Class

Class MyDerivedClass Inherits MyBaseClassEnd Class

Hereda: Hereda: Todas las operaciones y atributos públicos y Todas las operaciones y atributos públicos y

privadosprivados Los constructores y destructores no son Los constructores y destructores no son

heredadosheredados

Hereda: Hereda: Todas las operaciones y atributos públicos y Todas las operaciones y atributos públicos y

privadosprivados Los constructores y destructores no son Los constructores y destructores no son

heredadosheredados

PO

O y

Sin

taxi

sP

OO

y S

inta

xis

Page 17: Clase IV Delio Alanis. Agenda Conversión de tipos Conversión de tipos POO y Sintaxis POO y Sintaxis  Clases, Métodos  Herencia y Constructores  Partial.

HerenciaHerencia

En C#En C# En C#En C#

VB.NETVB.NET VB.NETVB.NET

public sealed class Cuenta{ }public abstract class Cuenta{ }

Public NotInheritable Class CuentaEnd Class

Public MustInherit Class CuentaEnd Class

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

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

PO

O y

Sin

taxi

sP

OO

y S

inta

xis

Page 18: Clase IV Delio Alanis. Agenda Conversión de tipos Conversión de tipos POO y Sintaxis POO y Sintaxis  Clases, Métodos  Herencia y Constructores  Partial.

Invocando el Constructor Base en C#Invocando el Constructor Base en C#Invocando el Constructor Base en C#Invocando el Constructor Base en C#

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

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

class MyBaseClass{

public MyBaseClass(int i){}protected MyBaseClass(string s){}

}class MyDerivedClass: MyBaseClass{

public MyDerivedClass(int i): base(i){}public MyDerivedClass(): base("Test"){}

}

PO

O y

Sin

taxi

sP

OO

y S

inta

xis

Page 19: Clase IV Delio Alanis. Agenda Conversión de tipos Conversión de tipos POO y Sintaxis POO y Sintaxis  Clases, Métodos  Herencia y Constructores  Partial.

Class MyBaseClass Public Sub New(ByVal i As Integer) End Sub Protected Sub New(ByVal s As String) End SubEnd ClassClass MyDerivedClass Inherits MyBaseClass Public Sub New(ByVal i As Integer) MyBase.New(i) End Sub Public Sub New() MyBase.New("Test") End SubEnd Class

Invocando el Constructor Base en Invocando el Constructor Base en VB.NETVB.NETInvocando el Constructor Base en Invocando el Constructor Base en VB.NETVB.NET El contructor “default” siempre invoca El contructor “default” siempre invoca

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

al constructor de la clase baseal constructor de la clase base

PO

O y

Sin

taxi

sP

OO

y S

inta

xis

Page 20: Clase IV Delio Alanis. Agenda Conversión de tipos Conversión de tipos POO y Sintaxis POO y Sintaxis  Clases, Métodos  Herencia y Constructores  Partial.

Protegiendo el Acceso a MiembrosProtegiendo el Acceso a MiembrosC#C#Protegiendo el Acceso a MiembrosProtegiendo el Acceso a MiembrosC#C#

““Publico” a las Publico” a las clases clases derivadasderivadas

““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 clases derivadasderivadas

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

No puede ser No puede ser usado en usado en estructurasestructuras

class MyBaseClass{

protected string field;}class MyDerivedClass: MyBaseClass{}class ThirdLevel: MyDerivedClass{

public string MyField(){

return field;}

}

PO

O y

Sin

taxi

sP

OO

y S

inta

xis

Page 21: Clase IV Delio Alanis. Agenda Conversión de tipos Conversión de tipos POO y Sintaxis POO y Sintaxis  Clases, Métodos  Herencia y Constructores  Partial.

Class MyBaseClass Protected field As StringEnd ClassClass MyDerivedClass Inherits MyBaseClassEnd Class

Class ThirdLevel Inherits MyDerivedClass Public Function MyField() As String Return field End FunctionEnd Class

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

““Publico” a Publico” a las clases las clases derivadasderivadas

““Privado” a Privado” a las clases las clases externasexternas

No puede ser No puede ser usado en usado en estructurasestructuras

PO

O y

Sin

taxi

sP

OO

y S

inta

xis

Page 22: Clase IV Delio Alanis. Agenda Conversión de tipos Conversión de tipos POO y Sintaxis POO y Sintaxis  Clases, Métodos  Herencia y Constructores  Partial.

LaboratorioLaboratorio•Clases y HerenciaClases y Herencia

PO

O y

Sin

taxi

sP

OO

y S

inta

xis

Page 23: Clase IV Delio Alanis. Agenda Conversión de tipos Conversión de tipos POO y Sintaxis POO y Sintaxis  Clases, Métodos  Herencia y Constructores  Partial.

Partial ClassPartial ClassPartial ClassPartial Class Permite que una implementación abarque multiples archivosPermite que una implementación abarque multiples archivos

Valido para clases y structs (y C# interfaces)Valido para clases y structs (y C# interfaces) Declaradas utilizando el nuevo modificador partialDeclaradas utilizando el nuevo modificador partial

Provee una serie de beneficiosProvee una serie de beneficios Implementaciones grandes pueden ser divididasImplementaciones grandes pueden ser divididas Código de usuario puede ser separado de código Código de usuario puede ser separado de código

generado automaticamentegenerado automaticamente Previene que la re-generación de código sobreescriba Previene que la re-generación de código sobreescriba

cambioscambios Utilizado por WinForms y DataSets fuertemente Utilizado por WinForms y DataSets fuertemente

tipadostipados Varios desarrolladores pueden trabajar en la misma Varios desarrolladores pueden trabajar en la misma

clase.clase. Permite code-beside en lugar de code-behindPermite code-beside en lugar de code-behind

Utilizado por ASP.NET 2.0Utilizado por ASP.NET 2.0 Permite mejor mantenimiento y control de código fuente.Permite mejor mantenimiento y control de código fuente.

Permite que una implementación abarque multiples archivosPermite que una implementación abarque multiples archivos Valido para clases y structs (y C# interfaces)Valido para clases y structs (y C# interfaces) Declaradas utilizando el nuevo modificador partialDeclaradas utilizando el nuevo modificador partial

Provee una serie de beneficiosProvee una serie de beneficios Implementaciones grandes pueden ser divididasImplementaciones grandes pueden ser divididas Código de usuario puede ser separado de código Código de usuario puede ser separado de código

generado automaticamentegenerado automaticamente Previene que la re-generación de código sobreescriba Previene que la re-generación de código sobreescriba

cambioscambios Utilizado por WinForms y DataSets fuertemente Utilizado por WinForms y DataSets fuertemente

tipadostipados Varios desarrolladores pueden trabajar en la misma Varios desarrolladores pueden trabajar en la misma

clase.clase. Permite code-beside en lugar de code-behindPermite code-beside en lugar de code-behind

Utilizado por ASP.NET 2.0Utilizado por ASP.NET 2.0 Permite mejor mantenimiento y control de código fuente.Permite mejor mantenimiento y control de código fuente.

Page 24: Clase IV Delio Alanis. Agenda Conversión de tipos Conversión de tipos POO y Sintaxis POO y Sintaxis  Clases, Métodos  Herencia y Constructores  Partial.

Partial Class – Ejemplo (C#)Partial Class – Ejemplo (C#)Partial Class – Ejemplo (C#)Partial Class – Ejemplo (C#)

Class1.cs

Class2.cs

Class3.cs

Page 25: Clase IV Delio Alanis. Agenda Conversión de tipos Conversión de tipos POO y Sintaxis POO y Sintaxis  Clases, Métodos  Herencia y Constructores  Partial.

Partial Class – Ejemplo (VB.NET)Partial Class – Ejemplo (VB.NET)Partial Class – Ejemplo (VB.NET)Partial Class – Ejemplo (VB.NET)

Class1.cs

Class2.cs

Class3.cs

Page 26: Clase IV Delio Alanis. Agenda Conversión de tipos Conversión de tipos POO y Sintaxis POO y Sintaxis  Clases, Métodos  Herencia y Constructores  Partial.

Usando Partial ClassUsando Partial ClassUsando Partial ClassUsando Partial Class

Dividir una clase no afecta el compilado del códigoDividir una clase no afecta el compilado del código Todas las partes se unen al compilarTodas las partes se unen al compilar No se puede extender una clase ya compiladaNo se puede extender una clase ya compilada

El código es acumulativo o no acumulativo.El código es acumulativo o no acumulativo. Los elementos acumulativos se unenLos elementos acumulativos se unen

Incluye métodos, campos e interfacesIncluye métodos, campos e interfaces Elementos no acumulativos deben coincidir en todas las Elementos no acumulativos deben coincidir en todas las

partespartes Incluye tipos, visibilidad y clases baseIncluye tipos, visibilidad y clases base

Ayuda a estar de acuerdo en la convención de nomrbesAyuda a estar de acuerdo en la convención de nomrbes Por ejemplo MyCls.Part1.cs y MyCls.Part2.csPor ejemplo MyCls.Part1.cs y MyCls.Part2.cs

El visor de clases y la barra de navegación reflejan las clases El visor de clases y la barra de navegación reflejan las clases enterasenteras

Dividir una clase no afecta el compilado del códigoDividir una clase no afecta el compilado del código Todas las partes se unen al compilarTodas las partes se unen al compilar No se puede extender una clase ya compiladaNo se puede extender una clase ya compilada

El código es acumulativo o no acumulativo.El código es acumulativo o no acumulativo. Los elementos acumulativos se unenLos elementos acumulativos se unen

Incluye métodos, campos e interfacesIncluye métodos, campos e interfaces Elementos no acumulativos deben coincidir en todas las Elementos no acumulativos deben coincidir en todas las

partespartes Incluye tipos, visibilidad y clases baseIncluye tipos, visibilidad y clases base

Ayuda a estar de acuerdo en la convención de nomrbesAyuda a estar de acuerdo en la convención de nomrbes Por ejemplo MyCls.Part1.cs y MyCls.Part2.csPor ejemplo MyCls.Part1.cs y MyCls.Part2.cs

El visor de clases y la barra de navegación reflejan las clases El visor de clases y la barra de navegación reflejan las clases enterasenteras

Page 27: Clase IV Delio Alanis. Agenda Conversión de tipos Conversión de tipos POO y Sintaxis POO y Sintaxis  Clases, Métodos  Herencia y Constructores  Partial.

Métodos VirtualesMétodos VirtualesMétodos VirtualesMétodos Virtuales

Es un método que la clase base permite Es un método que la clase base permite que sea sobrescrito en una clase derivadaque sea 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

No puede ser No puede ser estáticoestático

No puede No puede ser privado ser privado

Es un método que la clase base permite Es un método que la clase base permite que sea sobrescrito en una clase derivadaque sea 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

No puede ser No puede ser estáticoestático

No puede No puede ser privado ser privado

class MyBaseClass{

public virtual void MyMethod(){}

}

Class MyBaseClass Public Overridable Sub MyMethod() End SubEnd Class

PO

O y

Sin

taxi

sP

OO

y S

inta

xis

Page 28: Clase IV Delio Alanis. Agenda Conversión de tipos Conversión de tipos POO y Sintaxis POO y Sintaxis  Clases, Métodos  Herencia y Constructores  Partial.

Sobrescribiendo Métodos VirtualesSobrescribiendo Métodos VirtualesSobrescribiendo Métodos VirtualesSobrescribiendo Métodos Virtuales

Class MyBaseClass Public Overridable Sub MyMethod() End SubEnd Class

Class MyDerivedClass Inherits MyBaseClass Public Overrides Sub MyMethod() End SubEnd Class

Debe tener la misma Debe tener la misma firma para el métodofirma para el método

No se puede No se puede sobrescribir un método sobrescribir un método sobrescritosobrescrito

Override = virtual to Override = virtual to third levelthird level

No puede ser estático o No puede ser estático o privadoprivado

class MyBaseClass{

public virtual void MyMethod(){}}class MyDerivedClass: MyBaseClass{

public override void MyMethod(){}}

PO

O y

Sin

taxi

sP

OO

y S

inta

xis

Page 29: Clase IV Delio Alanis. Agenda Conversión de tipos Conversión de tipos POO y Sintaxis POO y Sintaxis  Clases, Métodos  Herencia y Constructores  Partial.

OcultamientoOcultamientoOcultamientoOcultamiento

Esconde un método idénticoEsconde un método idéntico Introduce un nuevo método a la Introduce un nuevo método a la

jerarquía de la clasejerarquía de la clase Oculta los métodos virtuales y no-Oculta los métodos virtuales y no-

virtualvirtual Esconde métodos con firmas Esconde métodos con firmas

idénticasidénticas Esconde campos con el mismo Esconde campos con el mismo

identificadoridentificador

Esconde un método idénticoEsconde un método idéntico Introduce un nuevo método a la Introduce un nuevo método a la

jerarquía de la clasejerarquía de la clase Oculta los métodos virtuales y no-Oculta los métodos virtuales y no-

virtualvirtual Esconde métodos con firmas Esconde métodos con firmas

idénticasidénticas Esconde campos con el mismo Esconde campos con el mismo

identificadoridentificador

PO

O y

Sin

taxi

sP

OO

y S

inta

xis

Page 30: Clase IV Delio Alanis. Agenda Conversión de tipos Conversión de tipos POO y Sintaxis POO y Sintaxis  Clases, Métodos  Herencia y Constructores  Partial.

Ocultando métodos no virtuales (C#)Ocultando métodos no virtuales (C#)Ocultando métodos no virtuales (C#)Ocultando métodos no virtuales (C#)

class MyBaseClass{

public void MyMethod(){}

}class MyDerivedClass: MyBaseClass{

new public virtual void MyMethod(){}}class ThirdLevel: MyDerivedClass{

public override void MyMethod(){}}

PO

O y

Sin

taxi

sP

OO

y S

inta

xis

Page 31: Clase IV Delio Alanis. Agenda Conversión de tipos Conversión de tipos POO y Sintaxis POO y Sintaxis  Clases, Métodos  Herencia y Constructores  Partial.

Ocultando métodos no virtuales Ocultando métodos no virtuales (VB.NET)(VB.NET)Ocultando métodos no virtuales Ocultando métodos no virtuales (VB.NET)(VB.NET)

Class MyBaseClass Public Sub MyMethod() End SubEnd Class

Class MyDerivedClass Inherits MyBaseClass

Public Overridable Shadows Sub MyMethod() End SubEnd Class

Class ThirdLevel Inherits MyDerivedClass

Public Overrides Sub MyMethod() End SubEnd Class

PO

O y

Sin

taxi

sP

OO

y S

inta

xis

Page 32: Clase IV Delio Alanis. Agenda Conversión de tipos Conversión de tipos POO y Sintaxis POO y Sintaxis  Clases, Métodos  Herencia y Constructores  Partial.

Ocultando camposOcultando camposOcultando camposOcultando campos

class MyBaseClass{

public int i;}class MyDerivedClass: MyBaseClass{

new public int i;}class ThirdLevel: MyDerivedClass{

public void MyMethod(){

i = 10;}

}

Class MyBaseClass Public i As IntegerEnd Class

Class MyDerivedClass Inherits MyBaseClass Public Shadows i As IntegerEnd Class

Class ThirdLevel Inherits MyDerivedClass

Public Sub MyMethod() i = 10 End SubEnd Class

PO

O y

Sin

taxi

sP

OO

y S

inta

xis

Page 33: Clase IV Delio Alanis. Agenda Conversión de tipos Conversión de tipos POO y Sintaxis POO y Sintaxis  Clases, Métodos  Herencia y Constructores  Partial.

LaboratorioLaboratorio•Métodos virtuales y ocultamientoMétodos virtuales y ocultamiento

PO

O y

Sin

taxi

sP

OO

y S

inta

xis

Page 34: Clase IV Delio Alanis. Agenda Conversión de tipos Conversión de tipos POO y Sintaxis POO y Sintaxis  Clases, Métodos  Herencia y Constructores  Partial.

InterfacesInterfacesInterfacesInterfaces

Contienen solo métodos sin implementaciónContienen solo métodos sin implementación Describen un “contrato”Describen un “contrato” 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

Contienen solo métodos sin implementaciónContienen solo métodos sin implementación Describen un “contrato”Describen un “contrato” 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 heredadasITransportable

Acelera

Frena

PO

O y

Sin

taxi

sP

OO

y S

inta

xis

Page 35: Clase IV Delio Alanis. Agenda Conversión de tipos Conversión de tipos POO y Sintaxis POO y Sintaxis  Clases, Métodos  Herencia y Constructores  Partial.

InterfacesInterfaces

C#: las Interfaces son declaradas mediante interfaseC#: las Interfaces son declaradas mediante interfase

VB.NET usa las palabras Interfase / End InterfaseVB.NET usa las palabras Interfase / End Interfase

//Definicion de la clase CtaCteinterfase ICtaCte{

//Definicion de miembros}

‘Definicion de la clase CtaCteInterfase ICtaCte

‘Definicion de miembrosEnd Interfase

Interfaz: Define un contrato. Una clase o estructura Interfaz: Define un contrato. Una clase o estructura que la implementa, adhiere al mismo.que la implementa, adhiere al mismo.

PO

O y

Sin

taxi

sP

OO

y S

inta

xis

Page 36: Clase IV Delio Alanis. Agenda Conversión de tipos Conversión de tipos POO y Sintaxis POO y Sintaxis  Clases, Métodos  Herencia y Constructores  Partial.

InterfacesInterfacesInterfacesInterfaces

Los métodos son implícitamente públicosLos métodos son implícitamente públicos Los métodos no tienen cuerpo (implementación)Los métodos no tienen cuerpo (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 cuerpo (implementación)Los métodos no tienen cuerpo (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”

interface IMyInterface{

void MyMethod1();bool MyMethod2(string s);

}

Interface IMyInterface Sub MyMethod1() Function MyMethod2(ByVal s As String) As BooleanEnd Interface

PO

O y

Sin

taxi

sP

OO

y S

inta

xis

Page 37: Clase IV Delio Alanis. Agenda Conversión de tipos Conversión de tipos POO y Sintaxis POO y Sintaxis  Clases, Métodos  Herencia y Constructores  Partial.

Métodos de las InterfacesMétodos de las InterfacesMétodos de las InterfacesMétodos de las Interfaces

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

Deben de implementarse todos los Deben de implementarse todos los métodos heredados por la interfasemétodos heredados por la interfase

Las interfases a su vez pueden Las interfases a su vez pueden heredar de múltiples interfasesheredar de múltiples interfases

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

Deben de implementarse todos los Deben de implementarse todos los métodos heredados por la interfasemétodos heredados por la interfase

Las interfases a su vez pueden Las interfases a su vez pueden heredar de múltiples interfasesheredar de múltiples interfases

System.String

Object IEnumerable IConvertible IComparable IClonable

PO

O y

Sin

taxi

sP

OO

y S

inta

xis

Page 38: Clase IV Delio Alanis. Agenda Conversión de tipos Conversión de tipos POO y Sintaxis POO y Sintaxis  Clases, Métodos  Herencia y Constructores  Partial.

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

El mismo “access modifier” (public), el mismo tipo de El mismo “access modifier” (public), el mismo tipo de retorno, mismo nombre, mismos parámetrosretorno, mismo nombre, mismos parámetros

El método implementado puede ser virtual o no virtualEl método implementado puede ser virtual o no virtual

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

El mismo “access modifier” (public), el mismo tipo de El mismo “access modifier” (public), el mismo tipo de retorno, mismo nombre, mismos parámetrosretorno, mismo nombre, mismos parámetros

El método implementado puede ser virtual o no virtualEl método implementado puede ser virtual o no virtual

Implementando Métodos de una Implementando Métodos de una InterfaseInterfaseImplementación Implicita (C#)Implementación Implicita (C#)

Implementando Métodos de una Implementando Métodos de una InterfaseInterfaseImplementación Implicita (C#)Implementación Implicita (C#)

interface IMyInterface{

void MyMethod1();bool MyMethod2(string s);

}class MyClass: IMyInterface{

public virtual void MyMethod1() {}public bool MyMethod2(string s) {}public void OtherMethod() {}

}

PO

O y

Sin

taxi

sP

OO

y S

inta

xis

Page 39: Clase IV Delio Alanis. Agenda Conversión de tipos Conversión de tipos POO y Sintaxis POO y Sintaxis  Clases, Métodos  Herencia y Constructores  Partial.

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

Puede realizarse un “cast” al tipo de Puede realizarse un “cast” al tipo de la interfasela interfase

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

Puede realizarse un “cast” al tipo de Puede realizarse un “cast” al tipo de la interfasela interfase

Invocando Métodos de una InterfaseInvocando Métodos de una InterfaseImplementación Implícita (C#)Implementación Implícita (C#)Invocando Métodos de una InterfaseInvocando Métodos de una InterfaseImplementación Implícita (C#)Implementación Implícita (C#)

MyClass mc = new MyClass();mc.MyMethod1();mc.OtherMethod();

IMyInterface mi = mc;bool b = mi.MyMethod2(“Hello”);

PO

O y

Sin

taxi

sP

OO

y S

inta

xis

Page 40: Clase IV Delio Alanis. Agenda Conversión de tipos Conversión de tipos POO y Sintaxis POO y Sintaxis  Clases, Métodos  Herencia y Constructores  Partial.

Debe usarse el nombre completo del método para su acceso Debe usarse el nombre completo del método para su acceso (fully qualified name)(fully qualified name)

No puede ser declarada como virtualNo puede ser declarada como virtual No puede especificar un “access modifier”No puede especificar un “access modifier” Solo puede ser accesado a través de la interfaseSolo puede ser accesado a través de la interfase

Debe usarse el nombre completo del método para su acceso Debe usarse el nombre completo del método para su acceso (fully qualified name)(fully qualified name)

No puede ser declarada como virtualNo puede ser declarada como virtual No puede especificar un “access modifier”No puede especificar un “access modifier” Solo puede ser accesado a través de la interfaseSolo puede ser accesado a través de la interfase

Implementando Métodos de una Implementando Métodos de una InterfaseInterfaseImplementación Explicita (C#)Implementación Explicita (C#)

Implementando Métodos de una Implementando Métodos de una InterfaseInterfaseImplementación Explicita (C#)Implementación Explicita (C#)

interface IMyInterface{

void MyMethod1();bool MyMethod2(string s);

}class MyClass: IMyInterface{

void IMyInterface.MyMethod1() {}bool IMyInterface.MyMethod2(string s) {}

}

PO

O y

Sin

taxi

sP

OO

y S

inta

xis

Page 41: Clase IV Delio Alanis. Agenda Conversión de tipos Conversión de tipos POO y Sintaxis POO y Sintaxis  Clases, Métodos  Herencia y Constructores  Partial.

Invocando Métodos de una Interfase Invocando Métodos de una Interfase Implementación Explícita (C#)Implementación Explícita (C#)Invocando Métodos de una Interfase Invocando Métodos de una Interfase Implementación Explícita (C#)Implementación Explícita (C#)

No puede ser invocado de forma directaNo puede ser invocado de forma directa No es parte publica de una clase No es parte publica de una clase Debe ser aplicado un “cast” al tipo de la interfase y llamado Debe ser aplicado un “cast” al tipo de la interfase y llamado

desde el tipo de la interfasedesde el tipo de la interfase En las estructuras esto significa una operación de En las estructuras esto significa una operación de

“boxing”“boxing”

No puede ser invocado de forma directaNo puede ser invocado de forma directa No es parte publica de una clase No es parte publica de una clase Debe ser aplicado un “cast” al tipo de la interfase y llamado Debe ser aplicado un “cast” al tipo de la interfase y llamado

desde el tipo de la interfasedesde el tipo de la interfase En las estructuras esto significa una operación de En las estructuras esto significa una operación de

“boxing”“boxing”

MyClass mc = new MyClass();mc.MyMethod1();

IMyInterface mi = new MyClass();mc.MyMethod1();bool b = mi.MyMethod2(“Hello”);

PO

O y

Sin

taxi

sP

OO

y S

inta

xis

Page 42: Clase IV Delio Alanis. Agenda Conversión de tipos Conversión de tipos POO y Sintaxis POO y Sintaxis  Clases, Métodos  Herencia y Constructores  Partial.

Permite que la implementación de la interfase sea excluida Permite que la implementación de la interfase sea excluida de la cara pública de la clase o estructurade la cara pública de la clase o estructura Implementa de forma interna una interfase que no es de Implementa de forma interna una interfase que no es de

interés para el usuario de la clase o estructurainterés para el usuario de la clase o estructura Resuelve conflictos de nombreResuelve conflictos de nombre

Permite que la implementación de la interfase sea excluida Permite que la implementación de la interfase sea excluida de la cara pública de la clase o estructurade la cara pública de la clase o estructura Implementa de forma interna una interfase que no es de Implementa de forma interna una interfase que no es de

interés para el usuario de la clase o estructurainterés para el usuario de la clase o estructura Resuelve conflictos de nombreResuelve conflictos de nombre

Implementando Métodos de una Implementando Métodos de una Interfase Interfase Ventajas: Implementación Explícita (C#)Ventajas: Implementación Explícita (C#)

Implementando Métodos de una Implementando Métodos de una Interfase Interfase Ventajas: Implementación Explícita (C#)Ventajas: Implementación Explícita (C#)

interface IMyInterface1 {

void MyMethod();}interface IMyInterface2 {

void MyMethod();}class MyClass: IMyInterface1, IMyInterface2{

void IMyInterface1.MyMethod() {}void IMyInterface2.MyMethod() {}

}

PO

O y

Sin

taxi

sP

OO

y S

inta

xis

Page 43: Clase IV Delio Alanis. Agenda Conversión de tipos Conversión de tipos POO y Sintaxis POO y Sintaxis  Clases, Métodos  Herencia y Constructores  Partial.

Implementando Métodos de una InterfaseImplementando Métodos de una Interfase VB.NETVB.NETImplementando Métodos de una InterfaseImplementando Métodos de una Interfase VB.NETVB.NET

Interface IMyInterface Sub MyMethod1() Sub MyMethod2() Sub MyMethod3() Sub MyMethod4() Sub MyMethod5()End Interface

Class [MyClass] Implements IMyInterface

Public Sub MyMethod1() Implements IMyInterface.MyMethod1 End Sub

Public Overridable Sub MyMethod2() _ Implements IMyInterface.MyMethod2 End Sub

Private Sub MyMethod3() _ Implements IMyInterface.MyMethod3 End Sub

Public Sub WhateverMethod() _ Implements IMyInterface.MyMethod4, IMyInterface.MyMethod5 End SubEnd ClassP

OO

y S

inta

xis

PO

O y

Sin

taxi

s

Page 44: Clase IV Delio Alanis. Agenda Conversión de tipos Conversión de tipos POO y Sintaxis POO y Sintaxis  Clases, Métodos  Herencia y Constructores  Partial.

Invocando Métodos de una Interfase Invocando Métodos de una Interfase VB.NETVB.NETInvocando Métodos de una Interfase Invocando Métodos de una Interfase VB.NETVB.NET

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

Si fue declarada como privada deberá Si fue declarada como privada deberá ser invocada a través de un “cast” al ser invocada a través de un “cast” al tipo de la interfase.tipo de la interfase. Para las estructuras esto significa una Para las estructuras esto significa una

operación de “boxing”operación de “boxing”

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

Si fue declarada como privada deberá Si fue declarada como privada deberá ser invocada a través de un “cast” al ser invocada a través de un “cast” al tipo de la interfase.tipo de la interfase. Para las estructuras esto significa una Para las estructuras esto significa una

operación de “boxing”operación de “boxing”

PO

O y

Sin

taxi

sP

OO

y S

inta

xis

Page 45: Clase IV Delio Alanis. Agenda Conversión de tipos Conversión de tipos POO y Sintaxis POO y Sintaxis  Clases, Métodos  Herencia y Constructores  Partial.

Clases AbstractasClases AbstractasClases AbstractasClases Abstractas

Proveen una implementación parcial Proveen una implementación parcial para que sea heredada por las clases para que sea heredada por las clases derivadasderivadas

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 Proveen una implementación parcial para que sea heredada por las clases para que sea heredada por las clases derivadasderivadas

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 46: Clase IV Delio Alanis. Agenda Conversión de tipos Conversión de tipos POO y Sintaxis POO y Sintaxis  Clases, Métodos  Herencia y Constructores  Partial.

Clases AbstractasClases AbstractasC#C#Clases AbstractasClases AbstractasC#C#interface ITransporte{

string Name();}

abstract class Transporte: ITransporte{

string Name(){ ... }

}

class Taxi: Transporte{ ... }

class Colectivo: Transporte{ ... }

«interface»ITransporte

Transporte{ abstract }

Taxi<<Concrete>>

Colectivo<<Concrete>>

PO

O y

Sin

taxi

sP

OO

y S

inta

xis

Page 47: Clase IV Delio Alanis. Agenda Conversión de tipos Conversión de tipos POO y Sintaxis POO y Sintaxis  Clases, Métodos  Herencia y Constructores  Partial.

Clases AbstractasClases AbstractasVB.NETVB.NETClases AbstractasClases AbstractasVB.NETVB.NETInterface ITransporte Function Name() As StringEnd Interface

MustInherit Class Transporte Implements ITransporte

Private Function Name() As String _ Implements ITransporte.Name '... End Function

End Class

Class Taxi Inherits Transporte '...End Class

Class Colectivo Inherits Transporte '...End Class

«interface»ITransporte

Transporte{ abstract }

Taxi<<Concrete>>

Colectivo<<Concrete>>

PO

O y

Sin

taxi

sP

OO

y S

inta

xis

Page 48: Clase IV Delio Alanis. Agenda Conversión de tipos Conversión de tipos POO y Sintaxis POO y Sintaxis  Clases, Métodos  Herencia y Constructores  Partial.

Clases AbstractasClases AbstractasClases AbstractasClases Abstractas

interface ITransporte{

string Name();}

abstract class Transporte{

public virtual string Name(){ ... }

}

class Taxi: Transporte, ITransporte{ ... }

class Colectivo: Transporte, ITransporte{ ... }

«interface»ITtansporte

Transporte{ abstract }

Taxi<<Concrete>>

Colectivo<<Concrete>>

PO

O y

Sin

taxi

sP

OO

y S

inta

xis

Page 49: Clase IV Delio Alanis. Agenda Conversión de tipos Conversión de tipos POO y Sintaxis POO y Sintaxis  Clases, Métodos  Herencia y Constructores  Partial.

Clases AbstractasClases AbstractasClases AbstractasClases Abstractas

«interface»ITtansporte

Transporte{ abstract }

Taxi<<Concrete>>

Colectivo<<Concrete>>

Interface IToken Function Name() As StringEnd Interface

MustInherit Class Token Public Overridable Function Name() As String '... End Function

End Class

Class CommentToken Inherits Token Implements IToken '...End Class

Class KeywordToken Inherits Token Implements IToken '...End Class1

PO

O y

Sin

taxi

sP

OO

y S

inta

xis

Page 50: Clase IV Delio Alanis. Agenda Conversión de tipos Conversión de tipos POO y Sintaxis POO y Sintaxis  Clases, Métodos  Herencia y Constructores  Partial.

Métodos AbstractosMétodos AbstractosMé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 derivadasDeben ser implementados por las clases derivadas Utiliza el calificador Utiliza el calificador abstractabstract en C# en C# Utiliza Utiliza MustOverrideMustOverride en VB.NET en VB.NET 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 derivadasDeben ser implementados por las clases derivadas Utiliza el calificador Utiliza el calificador abstractabstract en C# en C# Utiliza Utiliza MustOverrideMustOverride en VB.NET en VB.NET 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

O y

Sin

taxi

sP

OO

y S

inta

xis

Page 51: Clase IV Delio Alanis. Agenda Conversión de tipos Conversión de tipos POO y Sintaxis POO y Sintaxis  Clases, Métodos  Herencia y Constructores  Partial.

Métodos “estáticos”Métodos “estáticos”

C#C# C#C#

VB.NETVB.NET VB.NETVB.NET

public static void HacerDeposito(int importe) {

}

Public Shared Sub HacerDeposito(ByVal imp As Integer)

End Sub

Miembros que no requieren de una instancia para ser Miembros que no requieren de una instancia para ser invocadosinvocados

Miembros que no requieren de una instancia para ser Miembros que no requieren de una instancia para ser invocadosinvocados

PO

O y

Sin

taxi

sP

OO

y S

inta

xis

Page 52: Clase IV Delio Alanis. Agenda Conversión de tipos Conversión de tipos POO y Sintaxis POO y Sintaxis  Clases, Métodos  Herencia y Constructores  Partial.

ResumenResumen

Hemos visto la los conceptos Hemos visto la los conceptos principales de Programación principales de Programación Orientada a Objetos, aplicados a la Orientada a Objetos, aplicados a la sintaxis de los lenguajes sintaxis de los lenguajes Soportados por .NETSoportados por .NET

Se implementaron clases, herencia, Se implementaron clases, herencia, métodos virtuales y clases métodos virtuales y clases abstractasabstractas

PO

O y

Sin

taxi

sP

OO

y S

inta

xis

Page 53: Clase IV Delio Alanis. Agenda Conversión de tipos Conversión de tipos POO y Sintaxis POO y Sintaxis  Clases, Métodos  Herencia y Constructores  Partial.

AgendaAgenda

Conversión de tiposConversión de tipos POO y SintaxisPOO y Sintaxis

Clases, Métodos Clases, Métodos Herencia y ConstructoresHerencia y Constructores Partial ClassesPartial Classes OcultamientoOcultamiento Clases Abstractas e InterfacesClases Abstractas e Interfaces

Class DesignerClass Designer

Page 54: Clase IV Delio Alanis. Agenda Conversión de tipos Conversión de tipos POO y Sintaxis POO y Sintaxis  Clases, Métodos  Herencia y Constructores  Partial.

Class DesignerClass DesignerC

lass

Des

ign

er

Cla

ss D

esig

ne

r

Page 55: Clase IV Delio Alanis. Agenda Conversión de tipos Conversión de tipos POO y Sintaxis POO y Sintaxis  Clases, Métodos  Herencia y Constructores  Partial.

Usar Class Diagrams para…Usar Class Diagrams para…

Entender el código existenteEntender el código existente Diseñar las clasesDiseñar las clases Revisar y modificar códigoRevisar y modificar código Generar diagramas para Generar diagramas para

documentacióndocumentación

Cla

ss D

esig

ne

rC

lass

Des

ign

er

Page 56: Clase IV Delio Alanis. Agenda Conversión de tipos Conversión de tipos POO y Sintaxis POO y Sintaxis  Clases, Métodos  Herencia y Constructores  Partial.

Class DesignerClass Designer

Refleja el archivo de código fuente Refleja el archivo de código fuente relacionadorelacionado El diagrama es una vista del códigoEl diagrama es una vista del código

Almacenado a nivel de proyectoAlmacenado a nivel de proyecto Soporta herenciaSoporta herencia Soporta asociacionesSoporta asociaciones Soporta enums y structsSoporta enums y structs

Cla

ss D

esig

ne

rC

lass

Des

ign

er

Page 57: Clase IV Delio Alanis. Agenda Conversión de tipos Conversión de tipos POO y Sintaxis POO y Sintaxis  Clases, Métodos  Herencia y Constructores  Partial.

Class DesignerClass Designer

Elementos del designerElementos del designer ClassClass EnumEnum InterfaceInterface Abstract ClassAbstract Class StructStruct DelegateDelegate InheritanceInheritance AssociationAssociation CommentComment

Cla

ss D

esig

ne

rC

lass

Des

ign

er

Page 58: Clase IV Delio Alanis. Agenda Conversión de tipos Conversión de tipos POO y Sintaxis POO y Sintaxis  Clases, Métodos  Herencia y Constructores  Partial.

Class Designer – Agregando una Class Designer – Agregando una claseclase

Cla

ss D

esig

ne

rC

lass

Des

ign

er

Page 59: Clase IV Delio Alanis. Agenda Conversión de tipos Conversión de tipos POO y Sintaxis POO y Sintaxis  Clases, Métodos  Herencia y Constructores  Partial.

Class DesignerClass Designer Implementando una InterfaseImplementando una Interfase Visualizando la jerarquía de clasesVisualizando la jerarquía de clases

Cla

ss D

esig

ne

rC

lass

Des

ign

er

Page 60: Clase IV Delio Alanis. Agenda Conversión de tipos Conversión de tipos POO y Sintaxis POO y Sintaxis  Clases, Métodos  Herencia y Constructores  Partial.

LaboratorioLaboratorio•Class DesignerClass Designer

Cla

ss D

esig

ne

rC

lass

Des

ign

er

Page 61: Clase IV Delio Alanis. Agenda Conversión de tipos Conversión de tipos POO y Sintaxis POO y Sintaxis  Clases, Métodos  Herencia y Constructores  Partial.

ResumenResumen

Luego de comprender Luego de comprender programáticamente la forma en la programáticamente la forma en la que se trabaja con clases, se que se trabaja con clases, se incorporó la herramienta de Class incorporó la herramienta de Class Desginer de Visual Studio, que Desginer de Visual Studio, que permite desarrollar de manera permite desarrollar de manera sencilla y documentar nuestro sencilla y documentar nuestro modelo paralelamente.modelo paralelamente.

Cla

ss D

esig

ne

rC

lass

Des

ign

er