10 sintaxis oo
TRANSCRIPT
Módulo I- Introducción a la Programación en Módulo I- Introducción a la Programación en la Plataforma .Net con C#la Plataforma .Net con C#
TEMARIOTEMARIO
CAPITULO IV.- INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJECTOS
La programación Orientada a La programación Orientada a Objetos en C#Objetos en C#
Definición de una ClaseDefinición de una Clase
INTRODUCCIÓNINTRODUCCIÓN
Ejemplo Definición ClaseEjemplo Definición Clase
Declaración y Instanciación de Declaración y Instanciación de un Objeto:un Objeto:
Declaración de un Objeto: CuentaBancaria ObjCuentaBancaria
Instanciación de un Objecto: CuentaBancaria ObjCuentaBancaria = new
CuentaBancaria();
ConstructoresConstructores
En C# tienen el mismo nombre de la claseEn C# tienen el mismo nombre de la clase
class CtaCte{ public CtaCte(){...} //Const. por default public CtaCte(int i){...} //Const. con un parámetro}
Constructor: métodos dentro de la clase que son llamados automáticamente cuando se crea una instancia de dicha clase.
Miembros de una ClaseMiembros de una ClaseCampos: Campos: Un campo es una característica de un objeto, que ayuda a definir su estructura y permite diferenciarlo de otros objetos
Sintaxis general:
Ejemplo:
Miembros de una ClaseMiembros de una ClasePropiedad:Propiedad:Una propiedad o atributo es un contenedor de un tipo de datos asociado a un objeto.
Sintaxis general:
Ejemplo:
Miembros de una ClaseMiembros de una ClaseMétodo:Método:Es la implementación de un algoritmo asociado a un objeto
Ejemplo:
MétodosMétodos
En C# todo método es una funciónEn C# todo método es una función
public void HacerDeposito(int importe) //No devuelve valor{}
public int ObtenerInventario(int codArticulo) //Devuelve un entero{}
Métodos: acciones que un objeto puede llevar a Métodos: acciones que un objeto puede llevar a cabo.cabo.
Sobrecarga de MétodosSobrecarga de Métodos
public void HacerDeposito(int importe) {}
public void HacerDeposito(int importe, bool acreditar){}
Sobrecarga: varios métodos con el mismo nombre Sobrecarga: varios métodos con el mismo nombre pero diferente “firma”.pero diferente “firma”.
Métodos estáticosMétodos estáticos
public static void HacerDeposito(int importe) {
}
Miembros que no requieren de una instancia para Miembros que no requieren de una instancia para ser invocados. Se los llama métodos “de clase”ser invocados. Se los llama métodos “de clase”
PropiedadesPropiedadesPropiedad: característica o atributo de un objetoPropiedad: característica o atributo de un objeto
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
Sobrescribiendo y ocultado métodosSobrescribiendo y ocultado métodos
Sobrescribiendo: Remplazando o
extendiendo funcionalidad de la clase
padre.
Ocultado: Remplazando funcionalidad en la
clase padre con nuevo comportamiento.
(posiblemente un error)
class Employee{ protected virtual void
DoWork() { ... }}
class Manager : Employee{ protected override void DoWork() { ... }}
class Employee{ protected virtual void
DoWork() { ... }}
class Manager : Employee{ protected override void DoWork() { ... }}
class Employee{ protected void DoWork() { ... }}
class Manager : Employee{ public new void DoWork() { ... }}
class Employee{ protected void DoWork() { ... }}
class Manager : Employee{ public new void DoWork() { ... }}
Invocando métodos y constructores de la clase Invocando métodos y constructores de la clase basebase
class Employee{ protected virtual void DoWork() { ... }}
class Manager : Employee{ protected override void
DoWork() { ... base.DoWork(); }}
class Employee{ protected virtual void DoWork() { ... }}
class Manager : Employee{ protected override void
DoWork() { ... base.DoWork(); }}
Uso de base
Constructores Automáticamente se llama el
constructor por defecto a menos que se
especifique.
class Employee{ protected string empName; public Employee(string name) { this.empName = name; }}
class Manager : Employee{ protected string empGrade; public Manager(string name, string grade) : base(name) { this.empGrade = grade; }}
class Employee{ protected string empName; public Employee(string name) { this.empName = name; }}
class Manager : Employee{ protected string empGrade; public Manager(string name, string grade) : base(name) { this.empGrade = grade; }}
Asignando referencias en una jerarquía de Asignando referencias en una jerarquía de clasesclases
C# no permite asignar una referencia a una
variable de un tipo de dato a una variable de
otro tipo de dato.
Manager myManager = new Manager(…);ManualWorker myWorker = myManager;
Manager myManager = new Manager(…);ManualWorker myWorker = myManager;
… pero se puede asignar una referencia sobre
un tipo mayor en la jerarquía.
Manager myManager = new Manager(…);Employee myEmployee = myManager;
Manager myManager = new Manager(…);Employee myEmployee = myManager;
Se puede utilizar el operador is para asignar
una referencia a una variable de menor
jerarquía.
Manager myManagerAgain = myEmployee as Manager;
Manager myManagerAgain = myEmployee as Manager;
Ámbitos de los Miembros de Ámbitos de los Miembros de una Claseuna Clase
Private:Define el miembro de la clase para uso privado.
Ejemplo:
Ámbitos de los Miembros de Ámbitos de los Miembros de una Claseuna Clase
Protected: Los elementos declarados como protegidos sólo estarán accesibles, además de en la propia clase, por cualquier clase derivada.Ejemplo:
Ámbitos de los Miembros de Ámbitos de los Miembros de una Claseuna Clase
Internal: Cuando declaramos un miembro con este modificador, solo podremos acceder a él desde la propia clase o desde cualquier código que se encuentre en el mismo ensamblado.
Ejemplo:
Ámbitos de los Miembros de Ámbitos de los Miembros de una Claseuna Clase
Protected Internal:Protected Internal:Es una mezcla de Es una mezcla de Protected y Internal, es decir solo accesible Protected y Internal, es decir solo accesible desde las clases derivadas o desde el mismo desde las clases derivadas o desde el mismo proyecto.proyecto.
Ejemplo:
Ámbitos de los Miembros de Ámbitos de los Miembros de una Claseuna Clase
Public: Public: Este modificador de ámbito nos Este modificador de ámbito nos permite exponer públicamente cualquier permite exponer públicamente cualquier miembro de la clase, de forma que no haya miembro de la clase, de forma que no haya restricciones para acceder a él.restricciones para acceder a él.
Ejemplo:
Pilares Programación OOPilares Programación OOAbstracción:Abstracción:
Pilares Programación OOPilares Programación OOEncapsulación. Encapsulación. Ej: Ej: El siguiente es un ejemplo claro de encapsulación. La propiedad CodigoCliente tiene una validación que no permite que sólo escribir en el campo _CodigoCliente si el nuevo valor es mayor que cero
Pilares Programación OOPilares Programación OOHerencia. Herencia. SintaxisSintaxis::
Ejemplo:
Pilares Programación OOPilares Programación OO
public sealed class Cuenta{//No se puede heredar de esta clase “sellada” }public abstract class Cuenta{//No se pueden crear instancias de esta clase, sólo//de sus derivadas }
PolimorfismoPolimorfismoEjemplo:
InterfacesInterfacesEjemplo: