10 sintaxis oo

27
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#

Upload: claribel-eusebio-nolasco

Post on 01-Jul-2015

598 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: 10 sintaxis oo

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#

Page 2: 10 sintaxis oo

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#

Page 3: 10 sintaxis oo

Definición de una ClaseDefinición de una Clase

INTRODUCCIÓNINTRODUCCIÓN

Page 4: 10 sintaxis oo

Ejemplo Definición ClaseEjemplo Definición Clase

Page 5: 10 sintaxis oo

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();

Page 6: 10 sintaxis oo

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.

Page 7: 10 sintaxis oo

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:

Page 8: 10 sintaxis oo

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:

Page 9: 10 sintaxis oo

Miembros de una ClaseMiembros de una ClaseMétodo:Método:Es la implementación de un algoritmo asociado a un objeto

Ejemplo:

Page 10: 10 sintaxis oo

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.

Page 11: 10 sintaxis oo

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”.

Page 12: 10 sintaxis oo

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”

Page 13: 10 sintaxis oo

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

Page 14: 10 sintaxis oo

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() { ... }}

Page 15: 10 sintaxis oo

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; }}

Page 16: 10 sintaxis oo

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;

Page 17: 10 sintaxis oo

Ámbitos de los Miembros de Ámbitos de los Miembros de una Claseuna Clase

Private:Define el miembro de la clase para uso privado.

Ejemplo:

Page 18: 10 sintaxis oo

Á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:

Page 19: 10 sintaxis oo

Á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:

Page 20: 10 sintaxis oo

Á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:

Page 21: 10 sintaxis oo

Á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:

Page 22: 10 sintaxis oo

Pilares Programación OOPilares Programación OOAbstracción:Abstracción:

Page 23: 10 sintaxis oo

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

Page 24: 10 sintaxis oo

Pilares Programación OOPilares Programación OOHerencia. Herencia. SintaxisSintaxis::

Ejemplo:

Page 25: 10 sintaxis oo

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 }

Page 26: 10 sintaxis oo

PolimorfismoPolimorfismoEjemplo:

Page 27: 10 sintaxis oo

InterfacesInterfacesEjemplo: