Diapositiva 1
Agenda
Conversión de tipos
POO y Sintaxis
Clases, Mé
Métodos
Herencia y Constructores
Partial Classes
Ocultamiento
Clases Abstractas e Interfaces
Class Designer
Diapositiva 2
.NET Página 1
Agenda
Conversión de tipos
POO y Sintaxis
Clases, Mé
Métodos
Herencia y Constructores
Partial Classes
Ocultamiento
Clases Abstractas e Interfaces
Class Designer
Diapositiva 3
Conversión de tipos
C# no permite conversiones implí
implícitas de tipos
Si falla el casting se devuelve null o InvalidCastException
.NET Página 2
Conversión de tipos
.NET ofrece mé
métodos para realizar las conversiones, por ejemplo el
ToString()
ToString() que todos los object tienen.
Diapositiva 5
Laboratorio
•Conversió
Conversión de tipos y Excepciones
Diapositiva 6
.NET Página 3
Agenda
Conversión de tipos
POO y Sintaxis
Clases, Métodos
Herencia y Constructores
Partial Classes
Ocultamiento
Clases Abstractas e Interfaces
Class Designer
Diapositiva 7
Enums
Enum:
Enum: Listas de datos
martes = 2
miercoles = 3
jueves = 4
viernes = 5
End Enum
Diapositiva 8
.NET Página 4
Clases
Clase: es la definició
definición de las caracterí
características de un
determinado tipo de objeto.
C#:
C#: las clases son declaradas mediante class
//Definicion de la clase CtaCte
class CtaCte
{
//Definicion de miembros
}
Diapositiva 9
Constructores
Constructor: funciones dentro de la clase, que son
llamadas cuando se crea una instancia de dicha
clase.
En C# tienen el mismo nombre de la clase
class CtaCte
{
public CtaCte(){...} //Const. por default
public CtaCte(int i){...} //Const. con un parametro
}
End Sub
Sub New(ByVal i As Integer)
End Sub
End Class
Diapositiva 10
.NET Página 5
Propiedades
Propiedad: caracterí
característica
característica 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 ‘Asignación
Mostrar(cc.Balance) ‘Obtención
CtaCte cc = new CtaCte();
cc.Balance = 100; //Asignación
Mostrar(cc.Balance); //Obtención
Diapositiva 11
Métodos
M
Métodos:
étodos: acciones que un objeto puede llevar a cabo.
En C# todo mé
método
método es una funció
función
función
public void HacerDeposito(int importe) //No devuelve valor
{
}
End Sub
Diapositiva 12
.NET Página 6
Sobrecarga de Métodos
Sobrecarga: varios mé
métodos
m étodos con el mismo nombre, pero
diferentes pará
parámetros.
parámetros.
C#
public void HacerDeposito(int importe)
{
}
VB.NET
POO y Sintaxis
Diapositiva 13
Namespaces
Namespace: grupo de clases que tienen el mismo prefijo
C# VB.NET
namespace BancoARG Namespace BancoARG
{ Namespace Gestion
namespace Gestion Public Class CtaCte
{
public class CtaCte End Class
{
} Public Class CajaAhorro
public class CajaAhorro
{ End Class
} End Namespace
} End Namespace
}
‘Referencia “full”
//Referencia “full” BancoARG.Gestion.CtaCte
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();
Diapositiva 14
.NET Página 7
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 sólo
se permite
VB.NET usa la palabra clave Inherits Herencia
Class Cuenta ‘Clase Padre Simple
POO y Sintaxis
End Class
Herencia
Hereda:
Todas las operaciones y atributos pú
públicos
públicos y
privados
Los constructores y destructores no son
heredados
class MyBaseClass Class MyBaseClass
{} End Class
Diapositiva 16
.NET Página 8
Herencia
Dos keywords que afectan la ““posiblidad”
posiblidad”
posiblidad” de heredar
desde una clase base.
En C#
public sealed class Cuenta
{
}
public abstract class Cuenta
{
}
VB.NET
End Class
El contructor ““default”
default” siempre invoca
al constructor de la clase base
class MyBaseClass
{
public MyBaseClass(int i)
{}
protected MyBaseClass(string s)
{}
}
class MyDerivedClass: MyBaseClass
{
public MyDerivedClass(int i): base(i)
{}
POO y Sintaxis
Diapositiva 18
.NET Página 9
Invocando el Constructor Base en
VB.NET
El contructor ““default”
default” siempre invoca
al constructor de la clase base
Class MyBaseClass
Public Sub New(ByVal i As Integer)
End Sub
Protected Sub New(ByVal s As String)
End Sub
End Class
Class MyDerivedClass
Inherits MyBaseClass
Public Sub New(ByVal i As Integer)
MyBase.New(i)
End Sub
POO y Sintaxis
Diapositiva 19
Diapositiva 20
.NET Página 10
Protegiendo el Acceso a Miembros
VB.NET
Class MyBaseClass
Protected field As String
“Público”
blico” a
End Class las clases
Class MyDerivedClass derivadas
Inherits MyBaseClass
End Class “Privado”
Privado” a
Class ThirdLevel
las clases
Inherits MyDerivedClass externas
Public Function MyField() As String
Return field No puede ser
End Function usado en
POO y Sintaxis
End Class
estructuras
Diapositiva 21
Laboratorio
•Clases y Herencia
POO y Sintaxis
Diapositiva 22
.NET Página 11
Partial Class
Permite que una implementació
implementación
implementaci ón abarque múmúltiples
m últiples archivos
V
Válido
álido para clases y structs (y C# interfaces)
Declaradas utilizando el nuevo modificador partial
Provee una serie de beneficios
Implementaciones grandes pueden ser divididas
C
Código
ódigo de usuario puede ser separado de có código
código
generado automá
automáticamente
autom áticamente
Previene que la re-
re-generación
re-generació
generación de có
código
código sobreescriba
cambios
Utilizado por WinForms y DataSets fuertemente
tipados
Varios desarrolladores pueden trabajar en la misma
clase.
Permite code-
code-beside
code -beside en lugar de code-
code-behind
code -behind
Utilizado por ASP.NET 2.0
Permite mejor mantenimiento y control de có código
código fuente.
Diapositiva 23
Class1.cs Class3.cs
Class2.cs
Diapositiva 24
.NET Página 12
Partial Class – Ejemplo ((VB.NET)
VB.NET)
Class1.cs Class3.cs
Class2.cs
Diapositiva 25
Diapositiva 26
.NET Página 13
M étodos Virtuales
Métodos
Es un mémétodo
m étodo que la clase base permite
que sea sobrescrito en una clase derivada
Un mé método
m étodo no-
no-virtual
no -virtual es la UNICA
implementació
implementación
implementaci ón posible para este mé m étodo
método
No classpuede
MyBaseClass ser
está
estático
estático {
public virtual void MyMethod()
No {} puede
}
ser privado
Class MyBaseClass
POO y Sintaxis
Diapositiva 27
class MyBaseClass
{
public virtual void MyMethod(){}
POO y Sintaxis
}
class MyDerivedClass: MyBaseClass
{
public override void MyMethod(){}
}
Diapositiva 28
.NET Página 14
Ocultamiento
Esconde un m método
étodo id
idéntico
éntico
Introduce un nuevo m método
étodo a la
jerarquía
jerarqu ía de la clase
Oculta los m métodos
étodos virtuales y no no--
virtual
Esconde m
métodos
étodos con firmas
id
idénticas
énticas
POO y Sintaxis
class MyBaseClass
{
public void MyMethod()
{}
}
class MyDerivedClass: MyBaseClass
{
new public virtual void MyMethod(){}
}
class ThirdLevel: MyDerivedClass
{
public override void MyMethod(){}
POO y Sintaxis
Diapositiva 30
.NET Página 15
Ocultando métodos
métodos no virtuales
((VB.NET)
VB.NET)
Class MyBaseClass
Public Sub MyMethod()
End Sub
End Class
Class MyDerivedClass
Inherits MyBaseClass
Class ThirdLevel
Inherits MyDerivedClass
POO y Sintaxis
Diapositiva 31
Ocultando campos
} End Sub
End Class
Diapositiva 32
.NET Página 16
Laboratorio
•Métodos virtuales y ocultamiento
POO y Sintaxis
Diapositiva 33
Interfaces
Contienen só
sólo
sólo mé
métodos
métodos sin implementació
implementación
implementación
Describen un ““contrato”
contrato”
contrato”
No heredan atributos
No se pueden crear instancias de una
interfaz
Las clases derivadas deben de implementar
todas las operaciones heredadas
ITransportable
POO y Sintaxis
Acelera
Frena
Diapositiva 34
.NET Página 17
Interfaces
Interfaz: Define un contrato. Una clase o estructura
que la implementa, adhiere al mismo.
Diapositiva 35
Interfaces
Los mé
métodos
m étodos son implí
implícitamente
implícitamente púpúblicos
p úblicos
Los mé
métodos
m étodos no tienen cuerpo (implementació
(implementación)
(implementación)
No se declaran ““access
access modifiers”
modifiers”
Está
Estándar
Estándar Se les agrega el prefijo ““I”
I”
interface IMyInterface
{
void MyMethod1();
bool MyMethod2(string s);
}
Interface IMyInterface
Sub MyMethod1()
POO y Sintaxis
Diapositiva 36
.NET Página 18
M étodos de las Interfaces
Métodos
Diapositiva 37
Implementando M étodos
Métodos de una
Interfaz
Implementació
Implementación Implí
Implementación Implícita (C#
Implícita C#))
((C#)
Escribe el mé
método
m étodo exactamente de la misma forma que el
m
método
étodo de la interfase
El mismo ““access
access modifier”
modifier” ((public),
public),
public), el mismo tipo de
retorno, mismo nombre, mismos paráparámetros
parámetros
El mé
método
m étodo implementado puede ser virtual o no virtual
interface IMyInterface
{
void MyMethod1();
bool MyMethod2(string s);
}
class MyClass: IMyInterface
{
public virtual void MyMethod1() {}
POO y Sintaxis
Diapositiva 38
.NET Página 19
Invocando M étodos de una Interfaz
Métodos
Implementació
Implementación Implí
Implementación Implícita (C#
Implícita C#))
((C#)
IMyInterface mi = mc;
bool b = mi.MyMethod2(“Hello”);
Diapositiva 39
Implementando M étodos
Métodos de una
Interfaz
Implementació
Implementaci
Implementación ón Explicita (C#
C#))
((C#)
Debe usarse el nombre completo del mé método
m étodo para su acceso
((fully
fully qualified name)
name)
No puede ser declarada como virtual
No puede especificar un ““access
access modifier”
modifier”
SSólo
ólo puede ser accesado a travé
través
través 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) {}
}
Diapositiva 40
.NET Página 20
Invocando M étodos de una Interfaz
Métodos
Implementació
Implementación Explí
Implementación Explícita (C#
Explícita C#))
((C#)
bool b = mi.MyMethod2(“Hello”);
Diapositiva 41
Implementando M étodos
Métodos de una
Interfaz
Ventajas: Implementació
Implementaci
Implementación ón Explí
Explícita (C#
Explícita C#))
((C#)
Permite que la implementació
implementación
implementaci ón de la interfase sea excluida de
la cara pú
pública
p ública de la clase o estructura
Implementa de forma interna una interfaz que no es de
interé
interés
interés para el usuario de la clase o estructura
Resuelve conflictos de nombre
interface IMyInterface1
{
void MyMethod();
}
interface IMyInterface2
{
void MyMethod();
}
POO y Sintaxis
.NET Página 21
Implementando M étodos de una Interfaz
Métodos
VB.NET
Interface IMyInterface
Sub MyMethod1()
Sub MyMethod2()
Sub MyMethod3()
Sub MyMethod4()
Sub MyMethod5()
End Interface
Class [MyClass]
Implements IMyInterface
Implements IMyInterface.MyMethod3
End Sub
Diapositiva 44
.NET Página 22
Clases Abstractas
Diapositiva 45
Clases Abstractas
C#
interface ITransporte
{ «interface»
string Name(); ITransporte
}
{ ... }
Diapositiva 46
.NET Página 23
Clases Abstractas
VB.NET
Interface ITransporte
Function Name() As String
End Interface «interface»
ITransporte
MustInherit Class Transporte
Implements ITransporte
End Class
Class Taxi
Inherits Transporte Taxi Colectivo
'... <<Concrete>> <<Concrete>>
POO y Sintaxis
End Class
Class Colectivo
Inherits Transporte
'...
End Class
Diapositiva 47
Clases Abstractas
interface ITransporte
{ «interface»
ITtansporte
string Name();
}
Diapositiva 48
.NET Página 24
Clases Abstractas
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
Diapositiva 49
M étodos Abstractos
Métodos
SSólo
ólo en clases abstractas
No pueden contener implementació
implementación
implementación
Deben ser implementados por las clases derivadas
Utiliza el calificador abstract en C#
Utiliza MustOverride en VB.NET
Los mémétodos
métodos abstractos son virtuales
Los mé métodos
m étodos abstractos pueden sobrescribir
mmétodos
étodos de la clase base declarados como
virtuales
Los mé métodos
m étodos abstractos pueden sobrescribir
POO y Sintaxis
mmétodos
étodos de la clase base declarados como
““override”
override”
override”
Diapositiva 50
.NET Página 25
Métodos “estáticos”
Miembros que no requieren de una instancia para ser
invocados
C#
public static void HacerDeposito(int importe)
{
VB.NET
End Sub
Diapositiva 51
Resumen
Hemos visto los conceptos
principales de Programación
Orientada a Objetos, aplicados a la
sintaxis de los lenguajes
Soportados por .NET
Se implementaron clases, herencia,
métodos virtuales y clases
abstractas
POO y Sintaxis
Diapositiva 52
.NET Página 26
Agenda
Conversión de tipos
POO y Sintaxis
Clases, Mé
Métodos
Herencia y Constructores
Partial Classes
Ocultamiento
Clases Abstractas e Interfaces
Class Designer
Diapositiva 53
Class Designer
Class Designer
Diapositiva 54
.NET Página 27
Usar Class Diagrams para…
Diapositiva 55
Class Designer
Diapositiva 56
.NET Página 28
Class Designer
Comment
Diapositiva 57
Diapositiva 58
.NET Página 29
Class Designer
Implementando una Interfaz
Visualizando la jerarquía de clases
Class Designer
Diapositiva 59
Laboratorio
•Class Designer
Class Designer
Diapositiva 60
.NET Página 30
Resumen
Luego de comprender
programáticamente la forma en la
que se trabaja con clases, se
incorporó la herramienta de Class
Designer de Visual Studio, que
permite desarrollar de manera
sencilla y documentar nuestro
modelo paralelamente.
Class Designer
Diapositiva 61
.NET Página 31