You are on page 1of 22

¿Que es C#?

Lenguaje Orientado a Objetos

Introducción al C#
Conceptos Generales

José Jaime López Rabadán

ICEL

8 de diciembre de 2010
¿Que es C#? Lenguaje Orientado a Objetos

Contenido

1 ¿Que es C#?

2 Lenguaje Orientado a Objetos


¿Que es C#? Lenguaje Orientado a Objetos

Contenido

1 ¿Que es C#?
Conceptos
Caracterísiticas
¿Que es C#? Lenguaje Orientado a Objetos

Conceptos

¿Que es C#?

C# o C Sharp es un lenguaje de programación que está incluido


en la Plataforma .NET y corre en el Lenguaje Común en Tiempo
de Ejecución (CLR, Common Language Runtime).
El primer lenguaje en importancia para el CLR es C#, mucho de
lo que soporta la Plataforma .NET está escrito en C#.
C# intenta ser el lenguaje base para escribir aplicaciones .NET
C# deriva de C y C++, es moderno, simple y enteramente
orientado a objetos, simplifica y moderniza a C++ en las áreas
de clases, namespaces, sobrecarga de métodos y manejo de
excepciones.
Se elimino la complejidad de C++ para hacerlo más fácil de
utilizar y menos propenso a errores.
¿Que es C#? Lenguaje Orientado a Objetos

Caracterísiticas

Características

No soporta herencia múltiple, solamente el runtime .NET permite


la herencia múltiple en la forma de interfaces, las cuales no
pueden contener implementación.
No maneja apuntadores, para emular la función de los
apuntadores se utiliza delegates el cual provee las bases para el
.NET event model.
Por default trabaja con código administrado.
La Plataforma .NET provee un colector de basura que es
responsable de administrar la memoria en los programas C#.
El manejo de errores está basado en excepciones.
Soporta los conceptos como encapsulación, herencia y
polimorfismo de la programación orientada a objetos.
¿Que es C#? Lenguaje Orientado a Objetos

Caracterísiticas

Características

No existen funciones globales, variables o constantes. Todo


deber ser encapsulado dentro de la clase, como un miembro de
la instancia (accesible via una instancia de clase) o un miembro
estático (via el tipo).
Los métodos que se definen en las clases son por default no
virtuales (no pueden ser sobre escritos al derivar clases).
Soporta los modificadores de acceso private, protected, public y
agrega un cuarto modificador internal.
Solamente se permite una base clase, si se requiere herencia
múltiple es posible implementar intefaces.
No es posible utilizar variables no inicializadas.
No es posible hacer el cast de un entero a un tipo de referencia
(objeto).
¿Que es C#? Lenguaje Orientado a Objetos

Contenido

2 Lenguaje Orientado a Objetos


Objetos
Clase
Función Miembro
Campos Estáticos
Clase Base
Herencia
Clase Sealed
¿Que es C#? Lenguaje Orientado a Objetos

Lenguaje Orientado a Objetos

Según Bjarne Stroustrup autor del lenguaje de programación C++,


para que un lenguaje sea llamado Orientado a Objetos debe soportar
tres conceptos: objetos, clases y herencia.
Objeto
Clase
Herencia
Aunque los lenguajes orientados a objetos se construyen sobre los
conceptos de :
Encapsulación
Herencia
Polimorfismo
¿Que es C#? Lenguaje Orientado a Objetos

Objetos

Objeto

La instanciación es el acto de crear una instancia de un objeto, la


instancia es un objeto, la instanciación usa el operador new, después
la instanciación es posible comunicarnos con el objeto a través de
sus miembros. Un Objeto es una colección de información
relacionada y funcional. Un objeto se compone de:
Datos que describen el objeto y
Operaciones que pueden ser realizadas por el objeto
¿Que es C#? Lenguaje Orientado a Objetos

Objetos

Herencia

La Herencia es la habilidad para heredar datos y funcionalidad


de un objeto padre, la herencia es una característica
fundamental de un sistema orientado a objetos.
A través de la herencia es posible crear o derivar una nueva
clase basada en una clase existente.
Una clase derivada es la nueva clase que esta siendo creada y
la clase base es una de las cuales la nueva clase es derivada.
La nueva clase derivada hereda todos los miembros de la clase
base por consiguiente permite reusar el trabajo previo.
En C# se puede asumir que la clase derivada podría heredar
todos los miembros de la clase base.
¿Que es C#? Lenguaje Orientado a Objetos

Objetos

Herencia
Ejemplo
La herencia es un ejemplo del diseño orientado a objetos conocido
como una relación “is-a” (es-un), por ejemplo: “un empleado es una
persona”.

Una clase derivada no debería requerir más ni prometer menos


que su clase base sobre cualquiera de sus interfaces heredadas.
Una interfaz de clase es un contrato entre esta y los
programadores que usan la clase. upcasting, cuando un
programador tiene una referencia a la clase derivada, el
programador siempre puede tratar a esa clase como si fuera la
clase base.
En el lenguaje común en tiempo de ejecución .NET todos los
objetos heredan de la última clase base llamada object y existe
sólo una herencia simple de objetos.
Un objeto puede derivar sólo de una clase base.
¿Que es C#? Lenguaje Orientado a Objetos

Clase

Clase

Descripción
Una Clase es una plantilla para un objeto.
Una Clase define las operaciones que un objeto puede realizar y
define un valor que mantiene el estado del objeto, los
componentes principales de una clase son: métodos, eventos y
propiedades.
Una instancia de una clase es un objeto, se accede a la
funcionalidad de un objeto invocando sus métodos y accediendo
a sus propiedades, eventos y campos.
¿Que es C#? Lenguaje Orientado a Objetos

Clase

Clase

Descripción
Una clase utiliza modificadores para especificar la accesibilidad
de la clase y sus componentes, los componentes de una clase
son llamados miembros por lo que existen diferentes tipos de
miembros.
Una referencia se refiere a una instancia, una instancia es la
creación de un objeto del tipo clase que se está declarando. Una
clase utiliza ninguno, uno o más constructores para ayudar a
definir la instancia de una clase.
Existe una palabra reservada llamada this que sirve para hacer
referencia a la clase actual en el ámbito en el cual es utilizada.
Cuando se hace referencia a una variable de instancia que tiene
el mismo nombre de un parámetro se debe utilizar this.name.
¿Que es C#? Lenguaje Orientado a Objetos

Función Miembro

Función Miembro

Una Función Miembro puede ser un constructor, es decir, una


pieza de código que es invocada en una instancia del objeto.
¿Que es C#? Lenguaje Orientado a Objetos

Campos Estáticos

Campo Estático

Un Miembro Estático definine miembros de un objeto que no son


asociados con una instancia de clase específica.
Un Campo Estático es el tipo más simple de un miembro
estático, para declarar un campo estático se utiliza el
modificador static.
Un campo estático puede accederse a través del nombre de la
clase, en vez de la instancia de la clase (objeto):
¿Que es C#? Lenguaje Orientado a Objetos

Campos Estáticos

Ejemplo: MiContador.cs

1 using System;
2 class MiContador{
3 //Campo Estatico
4 public static int iContador = 0;
5 public MiContador(){
6 iContador++;
7 }
8 }
9 class App{
10 public static void Main(){
11 MiContador ContadorA = new MiContador();
12 Console.WriteLine(MiContador.iContador);
13 MiContador ContadorB = new MiContador();
14 Console.WriteLine(MiContador.iContador);
15 }
16 }
¿Que es C#? Lenguaje Orientado a Objetos

Clase Base

Clase Base

Una Clase base es un objeto padre de donde se basa un nuevo


trabajo.

Ejemplo: Persona.cs

1 using System;
2 abstract public class Persona{//Indica que la clase es abstracta
3 //Propiedades
4 public string sNombre;
5 public int iEdad;
6 //Constructor
7 public Persona(string sNombre, int iEdad){
8 this.sNombre = sNombre;
9 this.iEdad = iEdad;
10 }
11 // M t o d o s
12 abstract public string Tipo();// M t o d o que la clase derivada debe implementar
13 }
¿Que es C#? Lenguaje Orientado a Objetos

Herencia

Clase Derivada

Es una especialización de una clase

Ejemplo: Empleado.cs

1 public class Empleado : Persona{


2 public Empleado(string sNombre, int iEdad):base(sNombre, iEdad){}
3 override public string Tipo(){
4 return "Empleado";
5 }
6 }
¿Que es C#? Lenguaje Orientado a Objetos

Clase Sealed

Clase Sealed

Una Clase sealed se utiliza para prevenir que una clase sea
utilizada como una clase base, su principal uso es para prevenir
la derivación no planeada.
¿Que es C#? Lenguaje Orientado a Objetos

Clase Sealed

Ejemplo: ClaseDerivada.cs

1 sealed class ClaseBase{


2 ClaseBase(){}
3 }
4 class ClaseDerivada : ClaseBase{
5 }
6 class Sellada{
7 public static void Main(){
8 ClaseDerivada CD = new ClaseDerivada();
9 }
10 }

Al compilar el código se muestra el siguiente mensaje:


sealed.cs(4,7): error CS0509: ’ClaseDerivada’ : cannot inherit
from sealed class ’ClaseBase’
sealed.cs(1,14): (Location of symbol related to previous error)
¿Que es C#? Lenguaje Orientado a Objetos

Clase Sealed

Overloading/Sobrecarga

La Sobrecarga (Overloading) hace posible utilizar dos o más


clases con el mismo nombre, pero con parámetros diferentes.
La sobrecarga es común especialmente para los constructores
para definir diferentes maneras de crear una instancia nueva.
Cuando una función sobrecargada es invocada el compilador
selecciona la función apropiada que coincide con los
parámetros.
¿Que es C#? Lenguaje Orientado a Objetos

Clase Sealed

Ejemplo: Persona2.cs

1 using System;
2 public class Persona{
3 //Propiedades
4 public string sNombre;
5 public int iEdad;
6 private double dSueldo;
7 //Constructor
8 public Persona(string sNombre, int iEdad){
9 this.sNombre = sNombre;
10 this.iEdad = iEdad;
11 }
12 // M t o d o s
13 public string Tipo(){
14 return "Persona";
15 }
16 public void AsignarSueldo(double dSueldo){
17 this.dSueldo = dSueldo;
18 }
19 public double ObtenerSueldo(){
20 return this.dSueldo;
21 }
22 }
23 //Herencia Simple
24 public class Empleado : Persona{
25 public Empleado(string sNombre, int iEdad):base(sNombre, iEdad){}
26 public new string Tipo(){
27 return "Empleado";
28 }
29 double dSueldo;

You might also like