Beruflich Dokumente
Kultur Dokumente
[nombre instructor]
[fecha]
Agenda
Conversin de tipos
POO y Sintaxis
Clases, Mtodos
Herencia y Constructores
Partial Classes
Ocultamiento
Clases Abstractas e Interfaces
Class Designer
Agenda
Conversin de tipos
POO y Sintaxis
Clases, Mtodos
Herencia y Constructores
Partial Classes
Ocultamiento
Clases Abstractas e Interfaces
Class Designer
Conversin de tipos
C# no permite conversiones implcitas de tipos
Si falla el casting se devuelve null o InvalidCastException
martes = 2
miercoles = 3
jueves = 4
viernes = 5
End Enum
Clases
Clase: es la definicin de las caractersticas de un
determinado tipo de objeto.
Sub New()
End Sub
Sub New(ByVal i As Integer)
End Sub
End Class
Propiedades
Propiedad: caracterstica o atributo de un objeto
C# VB.NET
class CtaCte
{
Class CtaCte
int _balance;
Dim _balance As Integer
public int Balance
Property Balance() As Integer
{
Get
get
Return _balance
{
End Get
return _balance;
Set (ByVal value As Integer)
}
_balance = value
set
End Set
{
End Property
_balance = value;
End Class
POO y Sintaxis
}
}
Dim cc As New CtaCte()
}
cc.Balance = 100 Asignacin
Mostrar(cc.Balance) Obtencin
CtaCte cc = new CtaCte();
cc.Balance = 100; //Asignacin
Mostrar(cc.Balance); //Obtencin
Mtodos
Mtodos: acciones que un objeto puede llevar a cabo.
En C# todo mtodo es una funcin
public void HacerDeposito(int importe) //No devuelve valor
{
}
End Sub
C#
public void HacerDeposito(int importe)
{
}
VB.NET
POO y Sintaxis
BancoARG.Gestion.CtaCte; BancoARG.Gestion.CajaAhorro
BancoARG.Gestion.CajaAhorro;
Referencia a un namespace
//Referencia corta Imports BancoARG.Gestion
using BancoARG.Gestion; Dim cc As New CtaCte()
CtaCte cc = new CtaCte(); Dim ca As New CajaAhorro()
CajaAhorro ca = new CajaAhorro();
Herencia
Herencia: mecanismo por el cual una clase (hija) hereda de
otra (padre) para extender su funcionalidad.
En C# la herencia se define:
class Cuenta //Clase Padre
{
}
class CtaCte : Cuenta //Clase Hija
{
} En .NET solo
se permite
VB.NET usa la palabra clave Inherits Herencia
Class Cuenta Clase Padre
Simple
POO y Sintaxis
End Class
En C#
public sealed class Cuenta
{
}
public abstract class Cuenta
{
}
VB.NET
POO y Sintaxis
End Class
estructuras
Laboratorio
Clases y Herencia
POO y Sintaxis
Partial Class
Permite que una implementacin abarque multiples archivos
Valido para clases y structs (y C# interfaces)
Declaradas utilizando el nuevo modificador partial
Provee una serie de beneficios
Implementaciones grandes pueden ser divididas
Cdigo de usuario puede ser separado de cdigo
generado automaticamente
Previene que la re-generacin de cdigo sobreescriba
cambios
Utilizado por WinForms y DataSets fuertemente
tipados
Varios desarrolladores pueden trabajar en la misma clase.
Permite code-beside en lugar de code-behind
Utilizado por ASP.NET 2.0
Permite mejor mantenimiento y control de cdigo fuente.
Partial Class Ejemplo (C#)
Class1.cs Class3.cs
Class2.cs
Partial Class Ejemplo (VB.NET)
Class1.cs Class3.cs
Class2.cs
Usando Partial Class
Dividir una clase no afecta el compilado del cdigo
Todas las partes se unen al compilar
No se puede extender una clase ya compilada
El cdigo es acumulativo o no acumulativo.
Los elementos acumulativos se unen
Incluye mtodos, campos e interfaces
Elementos no acumulativos deben coincidir en todas las
partes
Incluye tipos, visibilidad y clases base
Ayuda a estar de acuerdo en la convencin de nomrbes
Por ejemplo MyCls.Part1.cs y MyCls.Part2.cs
El visor de clases y la barra de navegacin reflejan las clases
enteras
Mtodos Virtuales
ser privado
Class MyBaseClass
POO y Sintaxis
class MyBaseClass
{
public virtual void MyMethod(){}
POO y Sintaxis
}
class MyDerivedClass: MyBaseClass
{
public override void MyMethod(){}
}
Ocultamiento
class MyBaseClass
{
public void MyMethod()
{}
}
class MyDerivedClass: MyBaseClass
{
new public virtual void MyMethod(){}
}
class ThirdLevel: MyDerivedClass
{
public override void MyMethod(){}
POO y Sintaxis
}
Ocultando mtodos no virtuales
(VB.NET)
Class MyBaseClass
Public Sub MyMethod()
End Sub
End Class
Class MyDerivedClass
Inherits MyBaseClass
Class ThirdLevel
Inherits MyDerivedClass
POO y Sintaxis
} End Sub
End Class
Laboratorio
Mtodos virtuales y ocultamiento
POO y Sintaxis
Interfaces
Acelera
Frena
Interfaces
Interfaz: Define un contrato. Una clase o estructura
que la implementa, adhiere al mismo.
interface IMyInterface
{
void MyMethod1();
bool MyMethod2(string s);
}
Interface IMyInterface
Sub MyMethod1()
POO y Sintaxis
IMyInterface mi = mc;
bool b = mi.MyMethod2(Hello);
Implementando Mtodos de una
Interfase
Debe usarse el nombre completo del mtodo para su acceso
(fully qualified name)
Implementacin Explicita (C#)
No puede ser declarada como virtual
No puede especificar un access modifier
Solo puede ser accesado a travs de la interfase
interface IMyInterface
{
void MyMethod1();
bool MyMethod2(string s);
}
class MyClass: IMyInterface
{
POO y Sintaxis
void IMyInterface.MyMethod1() {}
bool IMyInterface.MyMethod2(string s) {}
}
Invocando Mtodos de una Interfase
Implementacin Explcita (C#)
No puede ser invocado de forma directa
No es parte publica de una clase
Debe ser aplicado un cast al tipo de la interfase y llamado
desde el tipo de la interfase
En las estructuras esto significa una operacin de
boxing
MyClass mc = new MyClass();
mc.MyMethod1();
bool b = mi.MyMethod2(Hello);
Implementando Mtodos de una
Interfase
Permite que la implementacin de la interfase sea excluida de
la cara pblica de la clase o estructura
Ventajas: Implementacin Explcita (C#)
Implementa de forma interna una interfase que no es de
inters para el usuario de la clase o estructura
Resuelve conflictos de nombre
interface IMyInterface1
{
void MyMethod();
}
interface IMyInterface2
{
void MyMethod();
}
POO y Sintaxis
Class [MyClass]
Implements IMyInterface
{ ... }
End Class
Class Taxi
Inherits Transporte Taxi Colectivo
'... <<Concrete>> <<Concrete>>
POO y Sintaxis
End Class
Class Colectivo
Inherits Transporte
'...
End Class
Clases Abstractas
interface ITransporte
{ interface
ITtansporte
string Name();
}
Interface IToken
Function Name() As String interface
End Interface ITtansporte
MustInherit Class Token
Public Overridable Function Name() As
String
'...
End Function Transporte
{ abstract }
End Class
Class CommentToken
Inherits Token
Implements IToken
'... Taxi Colectivo
End Class <<Concrete>> <<Concrete>>
POO y Sintaxis
Class KeywordToken
Inherits Token
Implements IToken
'...
End Class1
Mtodos Abstractos
C#
public static void HacerDeposito(int importe)
{
VB.NET
End Sub
Resumen
Hemos visto la los conceptos
principales de Programacin
Orientada a Objetos, aplicados a la
sintaxis de los lenguajes
Soportados por .NET
Se implementaron clases, herencia,
mtodos virtuales y clases
abstractas
POO y Sintaxis
Agenda
Conversin de tipos
POO y Sintaxis
Clases, Mtodos
Herencia y Constructores
Partial Classes
Ocultamiento
Clases Abstractas e Interfaces
Class Designer
Class Designer
Class Designer
Usar Class Diagrams para
Association
Comment
Class Designer Agregando una
clase
Class Designer
Class Designer
Implementando una Interfase
Visualizando la jerarqua de clases
Class Designer
Laboratorio
Class Designer
Class Designer
Resumen
Luego de comprender
programticamente la forma en la
que se trabaja con clases, se
incorpor la herramienta de Class
Desginer de Visual Studio, que
permite desarrollar de manera
sencilla y documentar nuestro
modelo paralelamente.
Class Designer