POO con C#
Yhoan Galeano
Web Developer
Introducción a C#
Historia
Caracteristicas
- Lenguaje de programación
- Orientado a objetos
- Basado en C y C++
- Seguridad de tipos
- Case Sensitive
- Lenguaje de alto nivel(Compilado)
- Incluido en el .NET Framework
Arquitectura
Framework de .NET
Porqué C#?
- Web
- Consola
- Backend(REST API, Soap Services)
- Desktop
- Windows
- Linux
- OSX
- Servicios
- Mobile Apps
- Android
- iOS
- Windows Phone
- iOT
- Drivers
- Video Juegos(Unity3D)
En el mercado...
- Agencias digitales
- Banca
- Gobierno
- Seguros
- Fábricas de Software
Productos hechos con C#
Entornos de desarrollo
- Visual Studio Code
- Visual Studio
- Sublime Text
- Notepad++
- MonoSharp
- Bloc de Notas
Programación Orientada a objetos
Es un paradigma de programación que permite desarrollar soluciones a través de software basándose en los objetos del mundo real.
(POO)
Es decir...
... cualquier cosa es un objeto.
Veamos algunos conceptos claves...
¿Que es un objeto?
- Es cualquier cosa de la que puedas emitir un concepto
- Estos pueden ser representados en una solución informática.
- Nombre
- Color
- Peso
- Edad
Comportamiento
Estado
Identidad
Conjunto de atributos que tiene el objeto.
Todo lo que el objeto puede hacer.
Representa la agrupación de aquellos objetos que presentan características similares.
- Caminar
- Maullar
- Ronronear
- Dejar caer cosas solo por diversión
Clase Gato
En la siguiente imagen, cada uno de los animales que vemos es considerado un objeto. Sin embargo de todos ellos podemos emitir un concepto conocido y para ellos usamos la palabra GATO
A ese concepto conocido que representa una agrupación de objetos se le conoce como clase.
Una clase ...
... es como un molde de galletas, este determina la forma y características que la galleta (objeto) va a tener...
Clase
Nombre | |
Color | |
Peso | |
Edad |
Caminar() | |
Maullar() | |
Ronronear() | |
DejarCaerCosas() |
Acciones o métodos |
Atributos o propiedades |
Gato |
Nombre: Pelusa | |
Color: Blanco | |
Peso: 14 lbs | |
Edad: 3 años |
Caminar() | |
Maullar() | |
Ronronear() | |
DejarCaerCosas() |
Acciones o métodos |
Atributos o propiedades |
Gato 1 |
Nombre: Garfield | |
Color: Naranjado | |
Peso: 30 lbs | |
Edad: 5 años |
Caminar() | |
Maullar() | |
Ronronear() | |
DejarCaerCosas() |
Acciones o métodos |
Atributos o propiedades |
Gato 2 |
Nombre: Silvestre | |
Color: Negro | |
Peso: 18 lbs | |
Edad: 6 años |
Caminar() | |
Maullar() | |
Ronronear() | |
DejarCaerCosas() |
Acciones o métodos |
Atributos o propiedades |
Gato 3 |
Objetos
clase Gato
cadena nombre
cadena color
real peso
entero edad
// Atributos
// Funciones o métodos
funcion maullar()
finfuncion
escribir("Meowww")
funcion ronronear()
finfuncion
escribir("rrrrrrrrrrrrr")
finclase
Pseudocódigo
Ya vamos entendiendo
Entonces, una clase esta compuesta por:
- Características (Atributos o propiedades)
- Comportamientos (Acciones o métodos)
Algo para tener en cuenta...
Las características y comportamientos de una clase son determinadas por el contexto del problema o escenario.
Esto en programación quiere decir, que dentro de un sistema, solo implementamos los atributos y métodos relacionados con el ámbito del problema que estamos solucionando.
Algo para tener en cuenta...
Cuando creamos un objeto de una clase le llamamos instancia.
Para comunicarnos con los objetos, desde la instancia nosotros le enviamos mensajes solicitándoles que realicen sus métodos por sí mismos.
De esta misma manera, nosotros le pedimos que nos regale información sobre alguno de sus atributos para mostrarlo o cambiar su valor.
Instancia
Gato pelusa = new Gato();
Nombre de la clase
Nombre del objeto
Creando un nuevo objeto (instancia)
Llamada al método constructor de la clase
Y para acceder a sus funciones y propiedades:
pelusa.color = "Negro";
pelusa.Maullar();
Pero ... ¿que es un método constructor?
Constructor
Un constructor es método que cumple la función de inicializar un objeto de una clase. Este se llama automáticamente cada vez que se crea una instancia.
En el constructor se asignan los valores iniciales para cada uno de los atributos de la clase, los cuales el nuevo objeto poseerá.
El método constructor siempre posee el mismo nombre de la clase a la cual pertenece y no puede devolver ningún valor (ni siquiera se puede especificar la palabra reservada void).
Constructor
Si en una clase no se escribe un constructor, este se asume por defecto. Ademas, no contendrá parámetros y tampoco funcionalidad. Sin embargo será invocado cada vez que se construya un objeto sin especificar ningún argumento.
class Gato
{
public string nombre;
public int edad;
public Gato(){
Console.WriteLine("Constructor de la clase Gato");
//Aquí inicializo los atributos de la clase...
}
}
Sobrecarga de constructores
class Gato
{
public string nombre;
public int edad;
public Gato(){
Console.WriteLine("Constructor de la clase Gato");
//Aquí inicializo los atributos de la clase...
}
public Gato(string nombre, int edad){
this.nombre = nombre;
this.edad = edad;
}
}
Palabra reservada this
La palabra reservada this sirve para hacer referencia a miembros de la clase en caso de que se quiera especificar, ya sea por motivos de colisión de nombres o por la claridad del código. Su sintaxis es:
-
this.campo
Donde campo es la variable de la clase a la que queremos hacer referencia.
Repaso
Ahora vamos a C#
Principios de POO
Abstracción
Definición
Una clase es una abstracción o una entidad esencial del problema o solución. Es decir, la abstracción es el proceso en el cual separamos las propiedades más importantes de un objeto, de las que no lo son.
Por medio de la abstracción definimos las características esenciales de un objeto del mundo real, los atributos y comportamientos que lo definen como tal, para después modelarlo en un objeto de software.
Encapsulamiento
Definición
También referido como ocultación de la información, el encapsulamiento es la propiedad de la orientación a objetos que nos permite asegurar que la información de un objeto le es desconocida a los demás objetos en la aplicación.
Dentro del encapsulamiento encontramos los siguientes ámbitos de visibilidad:
- Pública (public)
- Privada (private)
- Protegida (protected)
Ejemplos
Hagamos un taller
Herencia
Definición
Permite reusar código-conocimiento-funcionalidad en una clase-padre que hereda sus atributos y métodos a sus clases-hijas, subclases o clases-tipos derivados.
Esta particularidad permite crear una estructura jerárquica de clases cada vez más especializada. La gran ventaja es que uno ya no debe comenzar desde cero cuando desea especializar una clase existente. Como resultado, se pueden adquirir bibliotecas de clases que ofrecen una base que puede especializarse a voluntad.
Ejemplos
Polimorfismo
Definición
El polimorfismo es la propiedad por la cual una entidad puede tomar diferentes formas.
Generalmente está entidad es una clase y la forma en la que se consigue que tome diferentes formas es por medio de nombrar a los métodos de dicha clase con un mismo nombre pero con diferentes implementaciones.
Ejemplos
Diccionario de Términos
Clase: Propiedad y comportamiento de un tipo de objeto concreto.
Objeto: Entidad provista de un conjunto de atributos (datos) y de comportamiento o funcionalidad (métodos). Es una instancia a una clase.
Instancia: Lectura de los datos y funciones de una clase y la creación de un objeto a partir de éstos.
Atributo: Datos y propiedades del objeto.
Método: Algoritmo asociado a un objeto. Define aquello que el objeto puede hacer.
Evento: Acción que provoca una interacción del usuario con la máquina.
Mensaje: La comunicación dirigida a un objeto ordenando que ejecute uno de sus métodos.
Abstracción: Razonamiento para crear las clases capaces de dar la solución al planteamiento.
Herencia: Una clase puede heredar los campos y métodos de otra clase.
Polimorfismo: Varios objetos de la misma clase pueden actuar de diferente manera.
POO en C#
By Yhoan Andres Galeano Urrea
POO en C#
C#
- 1,362