10 sintaxis oo
TRANSCRIPT
![Page 1: 10 sintaxis oo](https://reader035.vdocuments.pub/reader035/viewer/2022081401/5593fc411a28abb56c8b45a2/html5/thumbnails/1.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022081401/5593fc411a28abb56c8b45a2/html5/thumbnails/2.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022081401/5593fc411a28abb56c8b45a2/html5/thumbnails/3.jpg)
Definición de una ClaseDefinición de una Clase
INTRODUCCIÓNINTRODUCCIÓN
![Page 4: 10 sintaxis oo](https://reader035.vdocuments.pub/reader035/viewer/2022081401/5593fc411a28abb56c8b45a2/html5/thumbnails/4.jpg)
Ejemplo Definición ClaseEjemplo Definición Clase
![Page 5: 10 sintaxis oo](https://reader035.vdocuments.pub/reader035/viewer/2022081401/5593fc411a28abb56c8b45a2/html5/thumbnails/5.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022081401/5593fc411a28abb56c8b45a2/html5/thumbnails/6.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022081401/5593fc411a28abb56c8b45a2/html5/thumbnails/7.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022081401/5593fc411a28abb56c8b45a2/html5/thumbnails/8.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022081401/5593fc411a28abb56c8b45a2/html5/thumbnails/9.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022081401/5593fc411a28abb56c8b45a2/html5/thumbnails/10.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022081401/5593fc411a28abb56c8b45a2/html5/thumbnails/11.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022081401/5593fc411a28abb56c8b45a2/html5/thumbnails/12.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022081401/5593fc411a28abb56c8b45a2/html5/thumbnails/13.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022081401/5593fc411a28abb56c8b45a2/html5/thumbnails/14.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022081401/5593fc411a28abb56c8b45a2/html5/thumbnails/15.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022081401/5593fc411a28abb56c8b45a2/html5/thumbnails/16.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022081401/5593fc411a28abb56c8b45a2/html5/thumbnails/17.jpg)
Á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](https://reader035.vdocuments.pub/reader035/viewer/2022081401/5593fc411a28abb56c8b45a2/html5/thumbnails/18.jpg)
Á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](https://reader035.vdocuments.pub/reader035/viewer/2022081401/5593fc411a28abb56c8b45a2/html5/thumbnails/19.jpg)
Á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](https://reader035.vdocuments.pub/reader035/viewer/2022081401/5593fc411a28abb56c8b45a2/html5/thumbnails/20.jpg)
Á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](https://reader035.vdocuments.pub/reader035/viewer/2022081401/5593fc411a28abb56c8b45a2/html5/thumbnails/21.jpg)
Á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](https://reader035.vdocuments.pub/reader035/viewer/2022081401/5593fc411a28abb56c8b45a2/html5/thumbnails/22.jpg)
Pilares Programación OOPilares Programación OOAbstracción:Abstracción:
![Page 23: 10 sintaxis oo](https://reader035.vdocuments.pub/reader035/viewer/2022081401/5593fc411a28abb56c8b45a2/html5/thumbnails/23.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022081401/5593fc411a28abb56c8b45a2/html5/thumbnails/24.jpg)
Pilares Programación OOPilares Programación OOHerencia. Herencia. SintaxisSintaxis::
Ejemplo:
![Page 25: 10 sintaxis oo](https://reader035.vdocuments.pub/reader035/viewer/2022081401/5593fc411a28abb56c8b45a2/html5/thumbnails/25.jpg)
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](https://reader035.vdocuments.pub/reader035/viewer/2022081401/5593fc411a28abb56c8b45a2/html5/thumbnails/26.jpg)
PolimorfismoPolimorfismoEjemplo:
![Page 27: 10 sintaxis oo](https://reader035.vdocuments.pub/reader035/viewer/2022081401/5593fc411a28abb56c8b45a2/html5/thumbnails/27.jpg)
InterfacesInterfacesEjemplo: