SlideShare una empresa de Scribd logo
Programación en C# (C Sharp)
Ing. Randy Douglas Clayton
Características de C#
 Lenguaje de programación líder para las
plataformas de Microsoft.
 Herramientas de Desarrollo son: Visual
Studio (IDE) y .net(Core)
 Engloba las características más provechosas
de otros lenguajes de programación.
 Permite crear aplicaciones de escritorio, web,
móviles, videojuegos, entre otros.
 Sintaxis muy similar a C/C++.
¿Vale la pena estudiar C#?
https://www.tiobe.com/tiobe-index/
Top lenguajes de programación
Temario
Sintaxis de C#
Variables, operadores, expresiones, bucles, condicionales,
entre otros…
POO
Clases, objetos, estructuras, tipos, enumeraciones, arreglos,
herencia, interfaces, excepciones, entre otros…
Características avanzadas
Propiedades, indexaciones, tipos genéricos, colecciones,
sobrecargas, trabajo con archivos, serialización…
Construcción de aplicaciones para Windows
Interfaces graficas de usuario, acceso de BD, integración con
Windows Store
Herramienta de desarrollo (IDE)
Tipos de aplicaciones en C#
Consola Las que se ejecutan en una ventana de línea
de comandos (CLI)
De
escritorio
Las que se ejecutan como aplicación de
escritorio (GUI)
Web Las que se ejecutan en un navegador web
(Página web)
Conociendo la interfaz
Conociendo la interfaz
1. Área de trabajo: Se escribe el
código.
2. Explorador de soluciones:
Muestra los componentes de la
aplicación.
3. Propiedades: Se realizan
configuraciones mayores.
4. Salida: Muestra los resultados
después de compilar el código.
5. Barra de herramientas: Dispone
de las opciones esenciales de la
barra de menú.
1
2
3
4
5
Conociendo la
interfaz
 En C# se crea un namespace
que es el espacio en donde se
desarrolla el programa, como
las carpetas en Windows. Tiene
el nombre de la solución.
 Los programas se desarrollan
en clases. Son las partes del
programa en donde se
desarrolla el código.
 static void Main, es el método o
la acción principal del
programa.
 Es case sensitive, no es lo
mismo mayúsculas de
minúsculas.
Conociendo la
interfaz
 Trabaja en bloques, como la
Katiuska.
 Sentencias: es la base del
código, es la instrucción y
tienen las siguientes
características:
 Terminan en punto y coma (;).
 La sentencia using importa las
librerías de C#.
 Intellisense, son las ayudas
contextuales del VS.
Conociendo la interfaz
 Los comentarios:
 Los comentarios son importantes para dar una guía del
código.
 Estos no aparecen en la ejecución.
 Los errores:
 Los de sintaxis el propio IDE ayuda a corregirlos.
 Estos no aparecen en la ejecución.
Identificadores
 Nombres que identifican elementos de los
programas:
 Namespaces
 Clases
 Métodos
 Constantes
 Variables
 Convenciones o reglas para nombrar los
identificadores:
 Letras, números y guiones bajo.
 Comenzar por letra o guion bajo,
 No se pueden usar palabras reservadas.
Operadores aritméticos
Suma +
Resta -
Multiplicación *
División /
Residuo / Módulo %
Incremento ++ o +=x
Decremento -- o -=X
Tipos de variables
 String
 Se almacenan caracteres, deben ir entre comillas.
 Integer
 Se almacenan números enteros de -2147483648 hasta 2147483647.
 Char
 Almacena un solo carácter.
 Booleanos
 Almacena los valores true o false
 Float
 Almacena números con decimales.
 Double
 Parecido al doble, solo que luego del punto almacena hasta 15 dígitos.
 Long
 Almacena enteros desde -9223372036854775808 hasta
9223372036854775807.
Declaración e inicialización
 Declarar, crear una variable.
 Inicializar, asignar un valor a una
variable. Se utiliza el operador “=“.
Casting
 Es cuando se asigna un valor de un tipo de dato a otro.
 Se tienen 2 tipos de casting:
 Implícito (automático): se convierte un valor pequeño a uno más grande.
char -> int -> long -> float -> double
 Explícito (manual): se convierte un valor grande a uno más pequeño.
double -> float -> long -> int -> char
Casting implícito
 Se realiza automáticamente cuando se pasa
un valor de un tipo de dato más pequeño a
uno que es más grande.
Casting explícito
 Se debe hacer manual con la función Convert
o colocando entre paréntesis el tipo de dato
al que se quiere convertir.
 La función Parse permite convertir una cadena
de caracteres a un tipo de dato numérico,
siempre y cuando se mantenga la estructura.
Constantes vrs. Variables
Constantes
 Espacio en memoria donde se almacena un
valor el cual no puede modificarse una vez
creado y declarado.
 Ejemplo: 𝜋
Variables
 Espacio en memoria donde se almacena un
valor el cual puede modificarse una vez
creada y declarada.
 Ejemplo: La edad
Métodos
¿Qué son?
• Grupo de
sentencias o
instrucciones
que realizan una
tarea en
concreto.
¿Para qué sirven?
• Realizar una
tarea en
concreto en un
determinado
momento.
• Aligerar carga
en el programa.
¿Su sintaxis?
• Datoretorno
nombreMétodo
(parámetros)
• {
• cuerpo del
método
• }
Métodos
Switch
switch(condición){
case expresión:
código que se ejecuta si se cumple la
expresión;
break;
case expresión:
código que se ejecuta si se cumple la
condición;
break;
default:
código que se ejecuta si no se cumple
ninguna de las condiciones;
break;
}
Ámbito, Contexto y Alcance
 El ámbito, contexto y alcance es todo lo que
esta encerrado en el método.
 El código dentro de los métodos tienen una
vida útil de hasta cuando el método se cierra.
 ¿Se puede usar una variable de un método en
otro?
Depende
Sobrecarga de
métodos
 Es la creación de varios
métodos con el mismo nombre
pero diferentes parámetros y
contenido.
 Sirve para mantener una
“sencillez” a la hora de
programar ya que los nombres
de los métodos se mantienen
constantes.
Métodos con
parámetros
opcionales
Se puede inicializar un parámetro al
ser creado en un método.
Así si no se utiliza a la hora de llamar
al método no lanza error.
Si se utiliza al llamar al método este
se inicializa con el valor indicado en
la llamada.
Métodos con parámetros opcionales
Estructuras
de control
Pero antes de eso….
Variables booleanos
• Almacenan true
(Verdadero, 1, Encendido,
etc…) y false (Falso, 0,
Apagado, etc..)
• Se declaran con el dato
primitivo bool.
Operadores
comparación
• == | igual que
• != | diferente que
• < | menor que
• <= | menor o igual que
• > | mayor que
• >= | mayor o igual que
Operadores lógicos
• ! | negación
• && | AND (y lógico)
• || | OR (o lógico)
Selección, bifurcación, Si, Si…no, if, else
………………
……………….
If(condición){
código a ejecutar
}
………………
………………
Selección, bifurcación, Si, Si…no, if, else
………………
……………….
If(condición){
código a ejecutar
}
else{
código a ejecutar si no se cumple la condición
}
………………
………………
Selección, bifurcación, Si, Si…no, if, else
………………
……………….
If(condición){
código a ejecutar si se cumple esta condión
}
else if(condicion){
código a ejecutar si se cumple esta condición
}
else{
código a ejecutar si no se cumple la condición
}
………………
………………
Condicional Switch
………………
……………….
If(condición){
código a ejecutar si se cumple esta condión
}
else if(condicion){
código a ejecutar si se cumple esta condición
}
else{
código a ejecutar si no se cumple la condición
}
………………
………………
Bucles
 Permiten repetir la ejecución de líneas de
código un número finito o infinito de veces.
Permite repetir código de una manera
rápida y sencilla
Ahorro de tiempo a la hora de
programar
Permite trabajar con grandes volúmenes
de datos.
Permite trabajar con estructuras de datos.
Bucles
Tipos
Determinados
For
Foreach
Indeterminados
While
Do While
Bucle While, Mientras
 Se utiliza cuando no se sabe cuantas veces
se debe ejecutar el código de su interior.
 Tener que leer registros en una BD.
while(condición){
código que se ejecuta mientras se
cumpla la condición
}
Bucle Do … While, Hacer … Mientras
 Funciona igual que el bucle While.
 Excepto que, este ejecutará el código al
menos una vez.
 Aunque su condición llegue a ser falsa.
do{
 código a ejecutar al menos una vez y
siempre que se cumpla la condición
} while (condición);
Excepciones
¿Qué son?
 Errores no controlados por el programador que
aparecen en tiempo de ejecución.
 Errores del usuario.
 Archivos u otros recursos no disponibles.
 Fallos de otros sistemas o equipos.
 Entre otras.
Manejo
 Usando bloque
try{
código que puede causar una excepción
}catch (excepción nombre){
código que se ejecuta si se causa la
excepción
}
Múltiples excepciones
 Un pedazo de código puede generarnos múltiples errores de excepción, por
lo que hay que capturarlas.
 Usando bloque
try{
código que puede causar una excepción
}catch (excepción){
código que se ejecuta si se causa la
excepción
}catch (excepción){
código que se ejecuta si se causa la
excepción
}catch (excepción){
código que se ejecuta si se causa la
excepción
}
 Lista de excepciones comunes
Jerarquía de excepciones
Exception
SystemException
OverflowException
FormatException
Recordar que:
Entre más especifico se sea mejor será el
código ya que se le puede indicar al usuario
cual fue el error ocurrido.
Conflicto entre excepciones
 Se puede hacer un tratamiento especial a una
excepción sobre otras genéricas.
 Se debe ir de la más especifica a la más
general.
 También se puede hacer uso de la clausula
when para hacer un filtro en el when.
Excepciones
automanejadas
 Hay excepciones que el compilador maneja
de forma manual.
 Para evitar eso se puede utilizar el bloque
checked.
 Solo funciona para desbodamiento en
operaciones aritmeticas con Int y double.
 También se puede habilitar esto desde
propiedades de la solución.
Lanzar excepciones
 Se puede obligar a que se manejen las
excepciones.
 Muy útil cuando se trabaja de forma
colaborativa.
 Se utiliza el bloque throw
El después de las excepciones, Finally
 El bloque finally se utiliza si hay un fragmento
de código que se quiere que ejecute no
importa si hubo una excepción o no.
 Se utiliza para:
 BD
 Lectura de ficheros externos
 Liberar recursos de la aplicación
POO
Paradigmas de
programación
Orientado a
procedimientos
Orientado a
Objetos
Programación orientada a procedimientos
 Algunos son: Foltran, Basic, Cobol, etc…
Desventajas
 Códigos muy grandes para aplicaciones
complejas.
 Poco reutilización de código.
 Difícil el manejo de errores de código.
 Difícil de depurar por otros.
 Código spaguetti.
Programación orientado a objetos
 Trasladar la naturaleza de los objetos de la vida
real a la programación.
 Estos tienen: estados, comportamientos
(métodos) y características (propiedades o
atributos).
 Ejemplos: C#, Java, C++, Python, etc…
Ventajas
 Programas divididos en trozos, partes, módulos o
clases.
 Reutilizable (herencia).
 Encapsulación.
 Si hay alguna falla el programa continua su
funcionamiento. Excepciones.
POO: Conceptos
 Clase: Modelo o plantilla de las características para un objeto
 Objeto: Ejemplificación de las clases. Derivan de estas.
 Modularización: Programación de una aplicación en diferentes ficheros, clases o módulos. “Dividir y conquistar”.
 Encapsulación: Protección de los componentes de una clase. Nivel de acceso.
 Public: Accesible desde cualquier parte.
 Private: Accesible desde la misma clase.
 Protected: Accesible para clases derivadas.
 Internal: Accesible desde el mismo ensamblado.
 Por defecto: Accesible desde el mismo paquete.
 Herencia: Clases que adquieren características de otras.
 Polimorfismo: Enviar mensajes iguales a objetos diferentes.
POO: Clases
 Modelo en donde se redacta las
características de un objeto. Una plantilla.
POO: Objetos
 Derivan de las clases.
 Ejemplar perteneciente a una clase
 Tienen propiedades, características,
atributos.
 Comportamiento, métodos,
funciones.
POO: Objetos
 Objeto:
 Accediendo a propiedades de un objeto
desde código:
 Mg.color = “azul”;
 Mg.peso = 2500;
 Mg.ancho = 2000;
 Mg.alto = 1900;
 Accediendo a comportamiento de objeto
desde código:
 Mg.arrancar();
 Mg.frena();
 Mg.gira();
 Mg.acelerar();
POO: Creación e inicialización
 Se crean como si fueran variables.
 Se inicializan con la palabra new
NombreClase().
 Se llaman haciendo alución al nombre del
objeto.
 Se pueden declarar e inicializar en la misma
línea
Clase objeto;
objeto = new Clase();
POO: Encapsulación
 Limitar la visualización de los atributos y
métodos.
 Permite que los métodos solo sepan lo que
necesitan de los otros métodos de una clase u
otra clase externa.
 Seguridad en el programa.
 Todo atributo debería ser privado y los
métodos que se necesiten públicos.
POO: Constructores
 Dan un estado inicial a los objetos.
Características por defecto.
 Sirve para inicializar los atributos de una clase.
 Lleva el mismo nombre de la clase.
 No devuelve nada ni tampoco es void.
 Tiene el mismo nombre de la clase.
POO: Getters y Setters
 Getters
 Recuperan propiedades a los objetos.
 Tienen return.
 No tienen parámetros ya que no cambian los
atributos.
 Se puede realizar lógica en lo interno del
método para darle un formato diferente a la
salida.
POO: Getters y Setters
 Setters
 Establecen propiedades a los objetos.
 No tienen return.
 Tienen parámetros ya que cambian los
atributos.
 Si se llaman los parámetros del mismo modo
que los atributos a los atributos se les indica
this.atributo.
POO: partial
 Puede que en ocasiones el código de una clase
sea muy grande.
 Se puede reducir su tamaño en C# si se parte la
clase utilizando la palabra reservada partial.
partial class NombreClase{
código de la clase NombreClase
}
partial class NombreClase{
más código de la clase NombreClase
}
POO: Modularización
 Dividir aplicación en varios ficheros fuentes.
Crear clases en ficheros independientes.
 Útil cuando se tienen aplicaciones muy
grandes para mantener un orden.
POO: Variables, constantes y métodos static
No static
obj1 obj2 obj3
int contador = 0
int contador = 0
int contador = 0
int contador = 0
POO: Variables, constantes y métodos static
No static
obj1 obj2 obj3
int contador = 0
int contador = 7
int contador = 3
int contador = 5
POO: Variables, constantes y métodos static
No static Static
obj1 obj2 obj3
int contador = 0
int contador = 7
int contador = 3
int contador = 5
obj1 obj2 obj3
static int contador = 7
POO: Clases Anónimas
 Clases sin nombre.
 Para uso muy especifico, ejemplo CRUD.
 Restricciones:
 Solo pueden tener campos públicos.
 Los campos tienen que inicializarse.
 Los campos no pueden ser static.
 No se pueden definir métodos.
var miVariable = new {Nombre = “Pedro”, edad =
15}
Estructuras de datos
Arrays, Arreglos, Matrices
 Estructuras de datos que contienen una colección
de datos del mismo tipo.
 Sirve para simplificar la recolección de datos de
mismo tipo. Ejemplo edades.
 Se agrupan por índice o posiciones.
 La primera posición es 0.
35
35 27 48 19 21
variable
arreglo
Clasificación de arreglos
 Unidimensional
 Tienen una dimensión
 Llamados vectores.
 Solo se necesita saber el índice o posición del
elemento
 Bidimensional
 Tienen 2 dimensiones
 Llamados matrices
 Se necesitan 2 datos para acceder al elemento
(fila, columna)
 Multidimensional
 Tienen 3 o más dimensiones
 Se necesitan de 3 datos o más para acceder a los
elementos.
Arrays, Arreglos, Matrices
Tipo_dato[] nombre_array;
nombre_array = new tipo_dato[cant. valores];
nombre_array[pos] = valor;
35
35 27 48 19 21
variable
arreglo
int edad;
edad = 14;
int edad = 14;
int[] edad;
edad = new int[5];
int[] edad = new int[5]
edad[0] = 35;
edad[1] = 27;
edad[2] = 48;
edad[3] = 19;
edad[4] = 21;
69 37 20 91 44
80 67 23 67 1
Arrays, Arreglos, Matrices
Tipo_dato[,] nombre_array;
nombre_array = new tipo_dato[filas, columnas];
nombre_array[fila, columna] = valor;
35 27 48 19 21
int[,] edad;
edad = new int[5, 3];
int[,] edad = new int[5, 3]
edad[0, 0] = 35;
edad[0, 1] = 27;
edad[0, 2] = 48;
edad[0, 3] = 19;
edad[0, 4] = 21;
Arrays, Arreglos, Matrices
Ejemplo Error común
Arrays, Arreglos, Matrices
Arrays implícito
Cadenas de texto (Strings)
 Length: Permite obtener la longitud de la cadena.
 SubString: Recupera una sub cadena indicándole la ubicación inicial y la cadena de caracteres.
 IndexOf: Devuelve el índice de un carácter específico.
 ToUpper: Convierte a mayúscula toda una cadena de caracteres.
 ToLower: Convierte a minúscula toda una cadena de caracteres.
 Replace: Reemplaza un carácter o caracteres de una cadena por otros.
Retomando estructuras de control: For
 Ciclo determinado, finito.
 Ideal para recorrer arreglos.
………..
………..
for(int contador = 0; contador < 8; contador++)
{
// código que se ejecuta mientras se
cumple la condición.
}
………..
………..
Retomando estructuras de control: Foreach
 Ciclo determinado, finito.
 Ideal para recorrer arreglos, más si son implícitos.
 No ayuda si se quieren hacer modificaciones.
………..
………..
foreach(iterador nombre in nombreArray)
{
//Console.WriteLine(nombre);
}
………..
………..
Arrays por parámetros
Pasar arreglos por parámetros Retornar arreglos
Volvemos a POO: Herencia
 Característica más importante en un lenguaje
POO.
 Recordar que la POO se basa en la vida real.
 Ventajas:
 Reutilizar código.
 Principio de herencia “es-un”.
Ejemplo
Empleado
Director
“es-un”
Jefe
Empleado
Jefe
Director
Características comunes
• Nombre
• Edad
• Fecha ingreso
• Salario
Comportamientos comunes
• Va trabajar
• Genera informes
Otro ejemplo
Clase Humano Clase Caballo
Clase Gorilla
Clase
Mamíferos
• Vertebrados
• Sangre caliente
• Cuidado parental
• Generan leche
Herencia: Sintaxis
Herencia: Constructores y bases
 El constructor de la sub clase (hijo) siempre llama al constructor de la super clase (padre).
 La instrucción :base() implícita llama a los constructores implícitos de las super clases.
 Si se realiza un constructor en la clase padre se debe codificar una instrucción base en los hijos.
Herencia: Constructores y bases
Herencia: Sustitución
 Consiste en sustituir un objeto de
un tipo por otro de otro tipo
diferente.
 “Es siempre un…”
 Mejor uso es para almacenar
arreglos de varios tipos de
objetos.
 Ser la base de otras como el
polimorfismo.
Empleado
Director Gral Jefe de sección Secretaria
Director Gral
Empleado Secretaria
Jefe de sección
Herencia: Sustitución
Herencia: Polimorfismo
 Es la ocultación o sobre escritura de los métodos hijos a los métodos padres.
 Se utilizan las palabras reservadas new (para indicar la ocultación en la clase hija), virtual (en el
padre para indicar que las sub clases deben tener un método que modifique al propio) y override
(en la subclase para sobre escribir el método del padre).
 Ocultación es hacer que el método actúe diferente al original.
 Sobre escritura es modifica el método, esto solo funciona si el método padre esta virtual.
Herencia: Polimorfismo
Herencia: Modificador de acceso
 El Protected
 Una mezcla entre el public y el private.
 Accesible desde la propia clase, pero también
para aquellas que herede.
Ejercicio práctico
 Creación de tres clases
 Avión
 Vehículo
 Auto
 Métodos comunes a las tres clases
 Arrancar motor
 Parar motor
Ejercicio práctico
 Creación de tres clases
 Avión
 Vehículo
 Auto
 Métodos comunes a las tres clases
 Arrancar motor
 Parar motor
 Método virtual
 Conducir
Interfaces
 Conjunto de directrices que deben cumplir las
clases.
 Parecido a las clases, pero estas solo
incorporan los métodos.
 Los métodos estarán sin completar.
 Se le puede decir como una plantilla.
 Obliga a que los desarrolladores implemente
los métodos de la interfaz en las clases que
heredan.
 A considerar:
 Nombre del método debe coincidir.
 Mismo tipo de dato a devolver.
 Mismo nº de parámetros y tipo.
Interfaces
 Una clase o sub clase puede heredar de N número de interfaces.
 Se separan con comas (,).
 Esto puede dar a ambigüedades.
 Para solucionarlo se hace uso de la función del polimorfismo es..un.
 Restricciones
 No se pueden definir variables.
 No se pueden definir constructores.
 No se pueden definir destructores.
 No se pueden especificar modificadores de acceso.
 No se pueden anidar otro tipo de estructuras en las interfaces.
Interfaces
Jerarquía de herencia y clases abstractas
Mamiferos
Ballena Caballo Humano Gorilla
getnombre()
respirar()
pensar()
cuidarCrias()
nadar() galopar() pensar() trepar()
IMamiferosTerrestres
numeroPatas()
I
I
I
numeroPatas() numeroPatas() numeroPatas()
Jerarquía de herencia y clases abstractas
Mamiferos
Ballena Caballo Humano Gorilla
IMamiferosTerrestres
numeroPatas()
pensar()
cuidarCrias()
galopar()
numeroPatas()
pensar()
numeroPatas()
trepar()
numeroPatas()
nadar()
I I I
Animales
Lagartija
getNombre()
respirar()
Jerarquía de herencia y clases abstractas
Mamiferos
Ballena Caballo Humano Gorilla
IMamiferosTerrestres
numeroPatas()
pensar()
cuidarCrias()
galopar()
numeroPatas()
pensar()
numeroPatas()
trepar()
numeroPatas()
nadar()
I I I
Animales
Lagartija
getNombre() respirar()
A
A
Jerarquía de herencia y clases abstractas
 Métodos abstractos:
 Solo esta declarado, igual que las interfaces.
 La clase debe ser abstracta.
 La clase abstracta es la menos especializada.
Personas
Empleados
Jefes
Directores
Alumno
Método
getDescripción
Método
abstracto
Método
getNombre
Método
setSubeSueldo
Interfaces gráficas
Entity Framework
 Principal medio de interacción de .NET con BD relacionales.
 Object Relational Mapper (ORM) herramienta que simplifica el mapeo entre los objetos y las tablas.
Programación en C#.pptx

Más contenido relacionado

Similar a Programación en C#.pptx

Fundamentos de Java / 15 consejos prácticos sobre Java que cambiarán la for...
Fundamentos de Java /   15 consejos prácticos sobre Java que cambiarán la for...Fundamentos de Java /   15 consejos prácticos sobre Java que cambiarán la for...
Fundamentos de Java / 15 consejos prácticos sobre Java que cambiarán la for...
Eudris Cabrera
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
lisobra
 
algoritmo
algoritmoalgoritmo
algoritmo
fior
 
Estructura de Lenguaje C++
Estructura de Lenguaje C++Estructura de Lenguaje C++
Estructura de Lenguaje C++
Nana Garces
 
Lenguajec
LenguajecLenguajec
Lenguajec
Luis Pérez
 
2 estructura programa-c
2 estructura programa-c2 estructura programa-c
2 estructura programa-c
Eliezer Cordova
 
Programación con C/AL para Microsoft Business Solutions Navision
Programación con C/AL para Microsoft Business Solutions NavisionProgramación con C/AL para Microsoft Business Solutions Navision
Programación con C/AL para Microsoft Business Solutions Navision
pabloesp
 
Programación estructurada presentación
Programación estructurada presentaciónProgramación estructurada presentación
Programación estructurada presentación
Ivarra
 
01 metprogramacion
01 metprogramacion01 metprogramacion
01 metprogramacion
ConfesorAD
 
Unidad 2
Unidad 2Unidad 2
Unidad 2
susanabiebs
 
Programacion C#
Programacion C#Programacion C#
Programacion C#
Andrew King
 
IntroLenguajeC.ppt
IntroLenguajeC.pptIntroLenguajeC.ppt
IntroLenguajeC.ppt
testnotification
 
Introducción a Python
Introducción a PythonIntroducción a Python
Introducción a Python
Facultad de Ciencias y Sistemas
 
Introduccion del Lenguaje C
Introduccion del Lenguaje CIntroduccion del Lenguaje C
Introduccion del Lenguaje C
Universidad de Guayaquil
 
Caracteristicas de C Sharp
Caracteristicas de C SharpCaracteristicas de C Sharp
Caracteristicas de C Sharp
Edgardo Martinez
 
Portafolio de evidencias
Portafolio de evidenciasPortafolio de evidencias
Portafolio de evidencias
Héctor Díaz Ponce Inda
 
Java Ago Dic07
Java Ago Dic07Java Ago Dic07
Java Ago Dic07
adrianpro
 
C curso intr
C curso intr C curso intr
C curso intr
leo24012
 
Unidad 2
Unidad 2Unidad 2
Java fundamentos 15 consejos prácticos - ITLA Tech Day 2018
Java fundamentos   15 consejos prácticos - ITLA Tech Day 2018Java fundamentos   15 consejos prácticos - ITLA Tech Day 2018
Java fundamentos 15 consejos prácticos - ITLA Tech Day 2018
Eudris Cabrera
 

Similar a Programación en C#.pptx (20)

Fundamentos de Java / 15 consejos prácticos sobre Java que cambiarán la for...
Fundamentos de Java /   15 consejos prácticos sobre Java que cambiarán la for...Fundamentos de Java /   15 consejos prácticos sobre Java que cambiarán la for...
Fundamentos de Java / 15 consejos prácticos sobre Java que cambiarán la for...
 
Algoritmos
AlgoritmosAlgoritmos
Algoritmos
 
algoritmo
algoritmoalgoritmo
algoritmo
 
Estructura de Lenguaje C++
Estructura de Lenguaje C++Estructura de Lenguaje C++
Estructura de Lenguaje C++
 
Lenguajec
LenguajecLenguajec
Lenguajec
 
2 estructura programa-c
2 estructura programa-c2 estructura programa-c
2 estructura programa-c
 
Programación con C/AL para Microsoft Business Solutions Navision
Programación con C/AL para Microsoft Business Solutions NavisionProgramación con C/AL para Microsoft Business Solutions Navision
Programación con C/AL para Microsoft Business Solutions Navision
 
Programación estructurada presentación
Programación estructurada presentaciónProgramación estructurada presentación
Programación estructurada presentación
 
01 metprogramacion
01 metprogramacion01 metprogramacion
01 metprogramacion
 
Unidad 2
Unidad 2Unidad 2
Unidad 2
 
Programacion C#
Programacion C#Programacion C#
Programacion C#
 
IntroLenguajeC.ppt
IntroLenguajeC.pptIntroLenguajeC.ppt
IntroLenguajeC.ppt
 
Introducción a Python
Introducción a PythonIntroducción a Python
Introducción a Python
 
Introduccion del Lenguaje C
Introduccion del Lenguaje CIntroduccion del Lenguaje C
Introduccion del Lenguaje C
 
Caracteristicas de C Sharp
Caracteristicas de C SharpCaracteristicas de C Sharp
Caracteristicas de C Sharp
 
Portafolio de evidencias
Portafolio de evidenciasPortafolio de evidencias
Portafolio de evidencias
 
Java Ago Dic07
Java Ago Dic07Java Ago Dic07
Java Ago Dic07
 
C curso intr
C curso intr C curso intr
C curso intr
 
Unidad 2
Unidad 2Unidad 2
Unidad 2
 
Java fundamentos 15 consejos prácticos - ITLA Tech Day 2018
Java fundamentos   15 consejos prácticos - ITLA Tech Day 2018Java fundamentos   15 consejos prácticos - ITLA Tech Day 2018
Java fundamentos 15 consejos prácticos - ITLA Tech Day 2018
 

Último

Mundo ABC Examen 1 Grado- Tercer Trimestre.pdf
Mundo ABC Examen 1 Grado- Tercer Trimestre.pdfMundo ABC Examen 1 Grado- Tercer Trimestre.pdf
Mundo ABC Examen 1 Grado- Tercer Trimestre.pdf
ViriEsteva
 
PPT_Servicio de Bandeja a Paciente Hospitalizado.pptx
PPT_Servicio de Bandeja a Paciente Hospitalizado.pptxPPT_Servicio de Bandeja a Paciente Hospitalizado.pptx
PPT_Servicio de Bandeja a Paciente Hospitalizado.pptx
gamcoaquera
 
EVALUACION ESTUDIANTIL 2023-2024 Ecuador - Costa.pptx
EVALUACION ESTUDIANTIL 2023-2024 Ecuador - Costa.pptxEVALUACION ESTUDIANTIL 2023-2024 Ecuador - Costa.pptx
EVALUACION ESTUDIANTIL 2023-2024 Ecuador - Costa.pptx
Victor Elizalde P
 
efemérides del mes de junio 2024 (1).pptx
efemérides del mes de junio 2024 (1).pptxefemérides del mes de junio 2024 (1).pptx
efemérides del mes de junio 2024 (1).pptx
acgtz913
 
2° año LA VESTIMENTA-ciencias sociales 2 grado
2° año LA VESTIMENTA-ciencias sociales 2 grado2° año LA VESTIMENTA-ciencias sociales 2 grado
2° año LA VESTIMENTA-ciencias sociales 2 grado
GiselaBerrios3
 
pueblos originarios de chile presentacion twinkl.pptx
pueblos originarios de chile presentacion twinkl.pptxpueblos originarios de chile presentacion twinkl.pptx
pueblos originarios de chile presentacion twinkl.pptx
RAMIREZNICOLE
 
Sesión: El espiritismo desenmascarado.pdf
Sesión: El espiritismo desenmascarado.pdfSesión: El espiritismo desenmascarado.pdf
Sesión: El espiritismo desenmascarado.pdf
https://gramadal.wordpress.com/
 
Evaluacion del tercer trimestre del 2023-2024
Evaluacion del tercer trimestre del 2023-2024Evaluacion del tercer trimestre del 2023-2024
Evaluacion del tercer trimestre del 2023-2024
israelsouza67
 
Inteligencia Artificial para Docentes HIA Ccesa007.pdf
Inteligencia Artificial para Docentes  HIA  Ccesa007.pdfInteligencia Artificial para Docentes  HIA  Ccesa007.pdf
Inteligencia Artificial para Docentes HIA Ccesa007.pdf
Demetrio Ccesa Rayme
 
Nuevos espacios,nuevos tiempos,nuevas practica.pptx
Nuevos espacios,nuevos tiempos,nuevas practica.pptxNuevos espacios,nuevos tiempos,nuevas practica.pptx
Nuevos espacios,nuevos tiempos,nuevas practica.pptx
lautyzaracho4
 
Hablemos de ESI para estudiantes Cuadernillo
Hablemos de ESI para estudiantes CuadernilloHablemos de ESI para estudiantes Cuadernillo
Hablemos de ESI para estudiantes Cuadernillo
Mónica Sánchez
 
Maristella Svampa-La sociedad excluyente.pdf
Maristella Svampa-La sociedad excluyente.pdfMaristella Svampa-La sociedad excluyente.pdf
Maristella Svampa-La sociedad excluyente.pdf
belbarcala
 
Camus, Albert - El Extranjero.pdf
Camus, Albert -        El Extranjero.pdfCamus, Albert -        El Extranjero.pdf
Camus, Albert - El Extranjero.pdf
AlexDeLonghi
 
La necesidad de bienestar y el uso de la naturaleza.pdf
La necesidad de bienestar y el uso de la naturaleza.pdfLa necesidad de bienestar y el uso de la naturaleza.pdf
La necesidad de bienestar y el uso de la naturaleza.pdf
JonathanCovena1
 
p4s.co Ecosistema de Ecosistemas - Diagrama.pdf
p4s.co Ecosistema de Ecosistemas - Diagrama.pdfp4s.co Ecosistema de Ecosistemas - Diagrama.pdf
p4s.co Ecosistema de Ecosistemas - Diagrama.pdf
DavidCamiloMosquera
 
La vida de Martin Miguel de Güemes para niños de primaria
La vida de Martin Miguel de Güemes para niños de primariaLa vida de Martin Miguel de Güemes para niños de primaria
La vida de Martin Miguel de Güemes para niños de primaria
EricaCouly1
 
Blogs_y_Educacion_Por Zaracho Lautaro_.pdf
Blogs_y_Educacion_Por Zaracho Lautaro_.pdfBlogs_y_Educacion_Por Zaracho Lautaro_.pdf
Blogs_y_Educacion_Por Zaracho Lautaro_.pdf
lautyzaracho4
 
Examen de Lengua Castellana y Literatura de la EBAU en Castilla-La Mancha 2024.
Examen de Lengua Castellana y Literatura de la EBAU en Castilla-La Mancha 2024.Examen de Lengua Castellana y Literatura de la EBAU en Castilla-La Mancha 2024.
Examen de Lengua Castellana y Literatura de la EBAU en Castilla-La Mancha 2024.
20minutos
 
CONTENIDOS Y PDA DE LA FASE 3,4 Y 5 EN NIVEL PRIMARIA
CONTENIDOS Y PDA DE LA FASE 3,4 Y 5 EN NIVEL PRIMARIACONTENIDOS Y PDA DE LA FASE 3,4 Y 5 EN NIVEL PRIMARIA
CONTENIDOS Y PDA DE LA FASE 3,4 Y 5 EN NIVEL PRIMARIA
ginnazamudio
 

Último (20)

Mundo ABC Examen 1 Grado- Tercer Trimestre.pdf
Mundo ABC Examen 1 Grado- Tercer Trimestre.pdfMundo ABC Examen 1 Grado- Tercer Trimestre.pdf
Mundo ABC Examen 1 Grado- Tercer Trimestre.pdf
 
PPT_Servicio de Bandeja a Paciente Hospitalizado.pptx
PPT_Servicio de Bandeja a Paciente Hospitalizado.pptxPPT_Servicio de Bandeja a Paciente Hospitalizado.pptx
PPT_Servicio de Bandeja a Paciente Hospitalizado.pptx
 
EVALUACION ESTUDIANTIL 2023-2024 Ecuador - Costa.pptx
EVALUACION ESTUDIANTIL 2023-2024 Ecuador - Costa.pptxEVALUACION ESTUDIANTIL 2023-2024 Ecuador - Costa.pptx
EVALUACION ESTUDIANTIL 2023-2024 Ecuador - Costa.pptx
 
efemérides del mes de junio 2024 (1).pptx
efemérides del mes de junio 2024 (1).pptxefemérides del mes de junio 2024 (1).pptx
efemérides del mes de junio 2024 (1).pptx
 
2° año LA VESTIMENTA-ciencias sociales 2 grado
2° año LA VESTIMENTA-ciencias sociales 2 grado2° año LA VESTIMENTA-ciencias sociales 2 grado
2° año LA VESTIMENTA-ciencias sociales 2 grado
 
pueblos originarios de chile presentacion twinkl.pptx
pueblos originarios de chile presentacion twinkl.pptxpueblos originarios de chile presentacion twinkl.pptx
pueblos originarios de chile presentacion twinkl.pptx
 
Sesión: El espiritismo desenmascarado.pdf
Sesión: El espiritismo desenmascarado.pdfSesión: El espiritismo desenmascarado.pdf
Sesión: El espiritismo desenmascarado.pdf
 
Evaluacion del tercer trimestre del 2023-2024
Evaluacion del tercer trimestre del 2023-2024Evaluacion del tercer trimestre del 2023-2024
Evaluacion del tercer trimestre del 2023-2024
 
Inteligencia Artificial para Docentes HIA Ccesa007.pdf
Inteligencia Artificial para Docentes  HIA  Ccesa007.pdfInteligencia Artificial para Docentes  HIA  Ccesa007.pdf
Inteligencia Artificial para Docentes HIA Ccesa007.pdf
 
Nuevos espacios,nuevos tiempos,nuevas practica.pptx
Nuevos espacios,nuevos tiempos,nuevas practica.pptxNuevos espacios,nuevos tiempos,nuevas practica.pptx
Nuevos espacios,nuevos tiempos,nuevas practica.pptx
 
Hablemos de ESI para estudiantes Cuadernillo
Hablemos de ESI para estudiantes CuadernilloHablemos de ESI para estudiantes Cuadernillo
Hablemos de ESI para estudiantes Cuadernillo
 
Maristella Svampa-La sociedad excluyente.pdf
Maristella Svampa-La sociedad excluyente.pdfMaristella Svampa-La sociedad excluyente.pdf
Maristella Svampa-La sociedad excluyente.pdf
 
A VISITA DO SENHOR BISPO .
A VISITA DO SENHOR BISPO                .A VISITA DO SENHOR BISPO                .
A VISITA DO SENHOR BISPO .
 
Camus, Albert - El Extranjero.pdf
Camus, Albert -        El Extranjero.pdfCamus, Albert -        El Extranjero.pdf
Camus, Albert - El Extranjero.pdf
 
La necesidad de bienestar y el uso de la naturaleza.pdf
La necesidad de bienestar y el uso de la naturaleza.pdfLa necesidad de bienestar y el uso de la naturaleza.pdf
La necesidad de bienestar y el uso de la naturaleza.pdf
 
p4s.co Ecosistema de Ecosistemas - Diagrama.pdf
p4s.co Ecosistema de Ecosistemas - Diagrama.pdfp4s.co Ecosistema de Ecosistemas - Diagrama.pdf
p4s.co Ecosistema de Ecosistemas - Diagrama.pdf
 
La vida de Martin Miguel de Güemes para niños de primaria
La vida de Martin Miguel de Güemes para niños de primariaLa vida de Martin Miguel de Güemes para niños de primaria
La vida de Martin Miguel de Güemes para niños de primaria
 
Blogs_y_Educacion_Por Zaracho Lautaro_.pdf
Blogs_y_Educacion_Por Zaracho Lautaro_.pdfBlogs_y_Educacion_Por Zaracho Lautaro_.pdf
Blogs_y_Educacion_Por Zaracho Lautaro_.pdf
 
Examen de Lengua Castellana y Literatura de la EBAU en Castilla-La Mancha 2024.
Examen de Lengua Castellana y Literatura de la EBAU en Castilla-La Mancha 2024.Examen de Lengua Castellana y Literatura de la EBAU en Castilla-La Mancha 2024.
Examen de Lengua Castellana y Literatura de la EBAU en Castilla-La Mancha 2024.
 
CONTENIDOS Y PDA DE LA FASE 3,4 Y 5 EN NIVEL PRIMARIA
CONTENIDOS Y PDA DE LA FASE 3,4 Y 5 EN NIVEL PRIMARIACONTENIDOS Y PDA DE LA FASE 3,4 Y 5 EN NIVEL PRIMARIA
CONTENIDOS Y PDA DE LA FASE 3,4 Y 5 EN NIVEL PRIMARIA
 

Programación en C#.pptx

  • 1. Programación en C# (C Sharp) Ing. Randy Douglas Clayton
  • 2. Características de C#  Lenguaje de programación líder para las plataformas de Microsoft.  Herramientas de Desarrollo son: Visual Studio (IDE) y .net(Core)  Engloba las características más provechosas de otros lenguajes de programación.  Permite crear aplicaciones de escritorio, web, móviles, videojuegos, entre otros.  Sintaxis muy similar a C/C++.
  • 3. ¿Vale la pena estudiar C#? https://www.tiobe.com/tiobe-index/ Top lenguajes de programación
  • 4. Temario Sintaxis de C# Variables, operadores, expresiones, bucles, condicionales, entre otros… POO Clases, objetos, estructuras, tipos, enumeraciones, arreglos, herencia, interfaces, excepciones, entre otros… Características avanzadas Propiedades, indexaciones, tipos genéricos, colecciones, sobrecargas, trabajo con archivos, serialización… Construcción de aplicaciones para Windows Interfaces graficas de usuario, acceso de BD, integración con Windows Store
  • 6. Tipos de aplicaciones en C# Consola Las que se ejecutan en una ventana de línea de comandos (CLI) De escritorio Las que se ejecutan como aplicación de escritorio (GUI) Web Las que se ejecutan en un navegador web (Página web)
  • 8. Conociendo la interfaz 1. Área de trabajo: Se escribe el código. 2. Explorador de soluciones: Muestra los componentes de la aplicación. 3. Propiedades: Se realizan configuraciones mayores. 4. Salida: Muestra los resultados después de compilar el código. 5. Barra de herramientas: Dispone de las opciones esenciales de la barra de menú. 1 2 3 4 5
  • 9. Conociendo la interfaz  En C# se crea un namespace que es el espacio en donde se desarrolla el programa, como las carpetas en Windows. Tiene el nombre de la solución.  Los programas se desarrollan en clases. Son las partes del programa en donde se desarrolla el código.  static void Main, es el método o la acción principal del programa.  Es case sensitive, no es lo mismo mayúsculas de minúsculas.
  • 10. Conociendo la interfaz  Trabaja en bloques, como la Katiuska.  Sentencias: es la base del código, es la instrucción y tienen las siguientes características:  Terminan en punto y coma (;).  La sentencia using importa las librerías de C#.  Intellisense, son las ayudas contextuales del VS.
  • 11. Conociendo la interfaz  Los comentarios:  Los comentarios son importantes para dar una guía del código.  Estos no aparecen en la ejecución.  Los errores:  Los de sintaxis el propio IDE ayuda a corregirlos.  Estos no aparecen en la ejecución.
  • 12. Identificadores  Nombres que identifican elementos de los programas:  Namespaces  Clases  Métodos  Constantes  Variables  Convenciones o reglas para nombrar los identificadores:  Letras, números y guiones bajo.  Comenzar por letra o guion bajo,  No se pueden usar palabras reservadas.
  • 13. Operadores aritméticos Suma + Resta - Multiplicación * División / Residuo / Módulo % Incremento ++ o +=x Decremento -- o -=X
  • 14. Tipos de variables  String  Se almacenan caracteres, deben ir entre comillas.  Integer  Se almacenan números enteros de -2147483648 hasta 2147483647.  Char  Almacena un solo carácter.  Booleanos  Almacena los valores true o false  Float  Almacena números con decimales.  Double  Parecido al doble, solo que luego del punto almacena hasta 15 dígitos.  Long  Almacena enteros desde -9223372036854775808 hasta 9223372036854775807.
  • 15. Declaración e inicialización  Declarar, crear una variable.  Inicializar, asignar un valor a una variable. Se utiliza el operador “=“.
  • 16. Casting  Es cuando se asigna un valor de un tipo de dato a otro.  Se tienen 2 tipos de casting:  Implícito (automático): se convierte un valor pequeño a uno más grande. char -> int -> long -> float -> double  Explícito (manual): se convierte un valor grande a uno más pequeño. double -> float -> long -> int -> char
  • 17. Casting implícito  Se realiza automáticamente cuando se pasa un valor de un tipo de dato más pequeño a uno que es más grande.
  • 18. Casting explícito  Se debe hacer manual con la función Convert o colocando entre paréntesis el tipo de dato al que se quiere convertir.  La función Parse permite convertir una cadena de caracteres a un tipo de dato numérico, siempre y cuando se mantenga la estructura.
  • 19. Constantes vrs. Variables Constantes  Espacio en memoria donde se almacena un valor el cual no puede modificarse una vez creado y declarado.  Ejemplo: 𝜋 Variables  Espacio en memoria donde se almacena un valor el cual puede modificarse una vez creada y declarada.  Ejemplo: La edad
  • 20. Métodos ¿Qué son? • Grupo de sentencias o instrucciones que realizan una tarea en concreto. ¿Para qué sirven? • Realizar una tarea en concreto en un determinado momento. • Aligerar carga en el programa. ¿Su sintaxis? • Datoretorno nombreMétodo (parámetros) • { • cuerpo del método • }
  • 22. Switch switch(condición){ case expresión: código que se ejecuta si se cumple la expresión; break; case expresión: código que se ejecuta si se cumple la condición; break; default: código que se ejecuta si no se cumple ninguna de las condiciones; break; }
  • 23. Ámbito, Contexto y Alcance  El ámbito, contexto y alcance es todo lo que esta encerrado en el método.  El código dentro de los métodos tienen una vida útil de hasta cuando el método se cierra.  ¿Se puede usar una variable de un método en otro? Depende
  • 24. Sobrecarga de métodos  Es la creación de varios métodos con el mismo nombre pero diferentes parámetros y contenido.  Sirve para mantener una “sencillez” a la hora de programar ya que los nombres de los métodos se mantienen constantes.
  • 25. Métodos con parámetros opcionales Se puede inicializar un parámetro al ser creado en un método. Así si no se utiliza a la hora de llamar al método no lanza error. Si se utiliza al llamar al método este se inicializa con el valor indicado en la llamada.
  • 28. Pero antes de eso…. Variables booleanos • Almacenan true (Verdadero, 1, Encendido, etc…) y false (Falso, 0, Apagado, etc..) • Se declaran con el dato primitivo bool. Operadores comparación • == | igual que • != | diferente que • < | menor que • <= | menor o igual que • > | mayor que • >= | mayor o igual que Operadores lógicos • ! | negación • && | AND (y lógico) • || | OR (o lógico)
  • 29. Selección, bifurcación, Si, Si…no, if, else ……………… ………………. If(condición){ código a ejecutar } ……………… ………………
  • 30. Selección, bifurcación, Si, Si…no, if, else ……………… ………………. If(condición){ código a ejecutar } else{ código a ejecutar si no se cumple la condición } ……………… ………………
  • 31. Selección, bifurcación, Si, Si…no, if, else ……………… ………………. If(condición){ código a ejecutar si se cumple esta condión } else if(condicion){ código a ejecutar si se cumple esta condición } else{ código a ejecutar si no se cumple la condición } ……………… ………………
  • 32. Condicional Switch ……………… ………………. If(condición){ código a ejecutar si se cumple esta condión } else if(condicion){ código a ejecutar si se cumple esta condición } else{ código a ejecutar si no se cumple la condición } ……………… ………………
  • 33. Bucles  Permiten repetir la ejecución de líneas de código un número finito o infinito de veces. Permite repetir código de una manera rápida y sencilla Ahorro de tiempo a la hora de programar Permite trabajar con grandes volúmenes de datos. Permite trabajar con estructuras de datos.
  • 35. Bucle While, Mientras  Se utiliza cuando no se sabe cuantas veces se debe ejecutar el código de su interior.  Tener que leer registros en una BD. while(condición){ código que se ejecuta mientras se cumpla la condición }
  • 36. Bucle Do … While, Hacer … Mientras  Funciona igual que el bucle While.  Excepto que, este ejecutará el código al menos una vez.  Aunque su condición llegue a ser falsa. do{  código a ejecutar al menos una vez y siempre que se cumpla la condición } while (condición);
  • 37. Excepciones ¿Qué son?  Errores no controlados por el programador que aparecen en tiempo de ejecución.  Errores del usuario.  Archivos u otros recursos no disponibles.  Fallos de otros sistemas o equipos.  Entre otras. Manejo  Usando bloque try{ código que puede causar una excepción }catch (excepción nombre){ código que se ejecuta si se causa la excepción }
  • 38. Múltiples excepciones  Un pedazo de código puede generarnos múltiples errores de excepción, por lo que hay que capturarlas.  Usando bloque try{ código que puede causar una excepción }catch (excepción){ código que se ejecuta si se causa la excepción }catch (excepción){ código que se ejecuta si se causa la excepción }catch (excepción){ código que se ejecuta si se causa la excepción }  Lista de excepciones comunes
  • 39. Jerarquía de excepciones Exception SystemException OverflowException FormatException Recordar que: Entre más especifico se sea mejor será el código ya que se le puede indicar al usuario cual fue el error ocurrido.
  • 40. Conflicto entre excepciones  Se puede hacer un tratamiento especial a una excepción sobre otras genéricas.  Se debe ir de la más especifica a la más general.  También se puede hacer uso de la clausula when para hacer un filtro en el when.
  • 41. Excepciones automanejadas  Hay excepciones que el compilador maneja de forma manual.  Para evitar eso se puede utilizar el bloque checked.  Solo funciona para desbodamiento en operaciones aritmeticas con Int y double.  También se puede habilitar esto desde propiedades de la solución.
  • 42. Lanzar excepciones  Se puede obligar a que se manejen las excepciones.  Muy útil cuando se trabaja de forma colaborativa.  Se utiliza el bloque throw
  • 43. El después de las excepciones, Finally  El bloque finally se utiliza si hay un fragmento de código que se quiere que ejecute no importa si hubo una excepción o no.  Se utiliza para:  BD  Lectura de ficheros externos  Liberar recursos de la aplicación
  • 45. Programación orientada a procedimientos  Algunos son: Foltran, Basic, Cobol, etc… Desventajas  Códigos muy grandes para aplicaciones complejas.  Poco reutilización de código.  Difícil el manejo de errores de código.  Difícil de depurar por otros.  Código spaguetti.
  • 46. Programación orientado a objetos  Trasladar la naturaleza de los objetos de la vida real a la programación.  Estos tienen: estados, comportamientos (métodos) y características (propiedades o atributos).  Ejemplos: C#, Java, C++, Python, etc… Ventajas  Programas divididos en trozos, partes, módulos o clases.  Reutilizable (herencia).  Encapsulación.  Si hay alguna falla el programa continua su funcionamiento. Excepciones.
  • 47. POO: Conceptos  Clase: Modelo o plantilla de las características para un objeto  Objeto: Ejemplificación de las clases. Derivan de estas.  Modularización: Programación de una aplicación en diferentes ficheros, clases o módulos. “Dividir y conquistar”.  Encapsulación: Protección de los componentes de una clase. Nivel de acceso.  Public: Accesible desde cualquier parte.  Private: Accesible desde la misma clase.  Protected: Accesible para clases derivadas.  Internal: Accesible desde el mismo ensamblado.  Por defecto: Accesible desde el mismo paquete.  Herencia: Clases que adquieren características de otras.  Polimorfismo: Enviar mensajes iguales a objetos diferentes.
  • 48. POO: Clases  Modelo en donde se redacta las características de un objeto. Una plantilla.
  • 49. POO: Objetos  Derivan de las clases.  Ejemplar perteneciente a una clase  Tienen propiedades, características, atributos.  Comportamiento, métodos, funciones.
  • 50. POO: Objetos  Objeto:  Accediendo a propiedades de un objeto desde código:  Mg.color = “azul”;  Mg.peso = 2500;  Mg.ancho = 2000;  Mg.alto = 1900;  Accediendo a comportamiento de objeto desde código:  Mg.arrancar();  Mg.frena();  Mg.gira();  Mg.acelerar();
  • 51. POO: Creación e inicialización  Se crean como si fueran variables.  Se inicializan con la palabra new NombreClase().  Se llaman haciendo alución al nombre del objeto.  Se pueden declarar e inicializar en la misma línea Clase objeto; objeto = new Clase();
  • 52. POO: Encapsulación  Limitar la visualización de los atributos y métodos.  Permite que los métodos solo sepan lo que necesitan de los otros métodos de una clase u otra clase externa.  Seguridad en el programa.  Todo atributo debería ser privado y los métodos que se necesiten públicos.
  • 53. POO: Constructores  Dan un estado inicial a los objetos. Características por defecto.  Sirve para inicializar los atributos de una clase.  Lleva el mismo nombre de la clase.  No devuelve nada ni tampoco es void.  Tiene el mismo nombre de la clase.
  • 54. POO: Getters y Setters  Getters  Recuperan propiedades a los objetos.  Tienen return.  No tienen parámetros ya que no cambian los atributos.  Se puede realizar lógica en lo interno del método para darle un formato diferente a la salida.
  • 55. POO: Getters y Setters  Setters  Establecen propiedades a los objetos.  No tienen return.  Tienen parámetros ya que cambian los atributos.  Si se llaman los parámetros del mismo modo que los atributos a los atributos se les indica this.atributo.
  • 56. POO: partial  Puede que en ocasiones el código de una clase sea muy grande.  Se puede reducir su tamaño en C# si se parte la clase utilizando la palabra reservada partial. partial class NombreClase{ código de la clase NombreClase } partial class NombreClase{ más código de la clase NombreClase }
  • 57. POO: Modularización  Dividir aplicación en varios ficheros fuentes. Crear clases en ficheros independientes.  Útil cuando se tienen aplicaciones muy grandes para mantener un orden.
  • 58. POO: Variables, constantes y métodos static No static obj1 obj2 obj3 int contador = 0 int contador = 0 int contador = 0 int contador = 0
  • 59. POO: Variables, constantes y métodos static No static obj1 obj2 obj3 int contador = 0 int contador = 7 int contador = 3 int contador = 5
  • 60. POO: Variables, constantes y métodos static No static Static obj1 obj2 obj3 int contador = 0 int contador = 7 int contador = 3 int contador = 5 obj1 obj2 obj3 static int contador = 7
  • 61. POO: Clases Anónimas  Clases sin nombre.  Para uso muy especifico, ejemplo CRUD.  Restricciones:  Solo pueden tener campos públicos.  Los campos tienen que inicializarse.  Los campos no pueden ser static.  No se pueden definir métodos. var miVariable = new {Nombre = “Pedro”, edad = 15}
  • 63. Arrays, Arreglos, Matrices  Estructuras de datos que contienen una colección de datos del mismo tipo.  Sirve para simplificar la recolección de datos de mismo tipo. Ejemplo edades.  Se agrupan por índice o posiciones.  La primera posición es 0. 35 35 27 48 19 21 variable arreglo
  • 64. Clasificación de arreglos  Unidimensional  Tienen una dimensión  Llamados vectores.  Solo se necesita saber el índice o posición del elemento  Bidimensional  Tienen 2 dimensiones  Llamados matrices  Se necesitan 2 datos para acceder al elemento (fila, columna)  Multidimensional  Tienen 3 o más dimensiones  Se necesitan de 3 datos o más para acceder a los elementos.
  • 65. Arrays, Arreglos, Matrices Tipo_dato[] nombre_array; nombre_array = new tipo_dato[cant. valores]; nombre_array[pos] = valor; 35 35 27 48 19 21 variable arreglo int edad; edad = 14; int edad = 14; int[] edad; edad = new int[5]; int[] edad = new int[5] edad[0] = 35; edad[1] = 27; edad[2] = 48; edad[3] = 19; edad[4] = 21;
  • 66. 69 37 20 91 44 80 67 23 67 1 Arrays, Arreglos, Matrices Tipo_dato[,] nombre_array; nombre_array = new tipo_dato[filas, columnas]; nombre_array[fila, columna] = valor; 35 27 48 19 21 int[,] edad; edad = new int[5, 3]; int[,] edad = new int[5, 3] edad[0, 0] = 35; edad[0, 1] = 27; edad[0, 2] = 48; edad[0, 3] = 19; edad[0, 4] = 21;
  • 70. Cadenas de texto (Strings)  Length: Permite obtener la longitud de la cadena.  SubString: Recupera una sub cadena indicándole la ubicación inicial y la cadena de caracteres.  IndexOf: Devuelve el índice de un carácter específico.  ToUpper: Convierte a mayúscula toda una cadena de caracteres.  ToLower: Convierte a minúscula toda una cadena de caracteres.  Replace: Reemplaza un carácter o caracteres de una cadena por otros.
  • 71. Retomando estructuras de control: For  Ciclo determinado, finito.  Ideal para recorrer arreglos. ……….. ……….. for(int contador = 0; contador < 8; contador++) { // código que se ejecuta mientras se cumple la condición. } ……….. ………..
  • 72. Retomando estructuras de control: Foreach  Ciclo determinado, finito.  Ideal para recorrer arreglos, más si son implícitos.  No ayuda si se quieren hacer modificaciones. ……….. ……….. foreach(iterador nombre in nombreArray) { //Console.WriteLine(nombre); } ……….. ………..
  • 73. Arrays por parámetros Pasar arreglos por parámetros Retornar arreglos
  • 74. Volvemos a POO: Herencia  Característica más importante en un lenguaje POO.  Recordar que la POO se basa en la vida real.  Ventajas:  Reutilizar código.  Principio de herencia “es-un”.
  • 75. Ejemplo Empleado Director “es-un” Jefe Empleado Jefe Director Características comunes • Nombre • Edad • Fecha ingreso • Salario Comportamientos comunes • Va trabajar • Genera informes
  • 76. Otro ejemplo Clase Humano Clase Caballo Clase Gorilla Clase Mamíferos • Vertebrados • Sangre caliente • Cuidado parental • Generan leche
  • 78. Herencia: Constructores y bases  El constructor de la sub clase (hijo) siempre llama al constructor de la super clase (padre).  La instrucción :base() implícita llama a los constructores implícitos de las super clases.  Si se realiza un constructor en la clase padre se debe codificar una instrucción base en los hijos.
  • 80. Herencia: Sustitución  Consiste en sustituir un objeto de un tipo por otro de otro tipo diferente.  “Es siempre un…”  Mejor uso es para almacenar arreglos de varios tipos de objetos.  Ser la base de otras como el polimorfismo. Empleado Director Gral Jefe de sección Secretaria Director Gral Empleado Secretaria Jefe de sección
  • 82. Herencia: Polimorfismo  Es la ocultación o sobre escritura de los métodos hijos a los métodos padres.  Se utilizan las palabras reservadas new (para indicar la ocultación en la clase hija), virtual (en el padre para indicar que las sub clases deben tener un método que modifique al propio) y override (en la subclase para sobre escribir el método del padre).  Ocultación es hacer que el método actúe diferente al original.  Sobre escritura es modifica el método, esto solo funciona si el método padre esta virtual.
  • 84. Herencia: Modificador de acceso  El Protected  Una mezcla entre el public y el private.  Accesible desde la propia clase, pero también para aquellas que herede.
  • 85. Ejercicio práctico  Creación de tres clases  Avión  Vehículo  Auto  Métodos comunes a las tres clases  Arrancar motor  Parar motor
  • 86. Ejercicio práctico  Creación de tres clases  Avión  Vehículo  Auto  Métodos comunes a las tres clases  Arrancar motor  Parar motor  Método virtual  Conducir
  • 87. Interfaces  Conjunto de directrices que deben cumplir las clases.  Parecido a las clases, pero estas solo incorporan los métodos.  Los métodos estarán sin completar.  Se le puede decir como una plantilla.  Obliga a que los desarrolladores implemente los métodos de la interfaz en las clases que heredan.  A considerar:  Nombre del método debe coincidir.  Mismo tipo de dato a devolver.  Mismo nº de parámetros y tipo.
  • 88. Interfaces  Una clase o sub clase puede heredar de N número de interfaces.  Se separan con comas (,).  Esto puede dar a ambigüedades.  Para solucionarlo se hace uso de la función del polimorfismo es..un.  Restricciones  No se pueden definir variables.  No se pueden definir constructores.  No se pueden definir destructores.  No se pueden especificar modificadores de acceso.  No se pueden anidar otro tipo de estructuras en las interfaces.
  • 90. Jerarquía de herencia y clases abstractas Mamiferos Ballena Caballo Humano Gorilla getnombre() respirar() pensar() cuidarCrias() nadar() galopar() pensar() trepar() IMamiferosTerrestres numeroPatas() I I I numeroPatas() numeroPatas() numeroPatas()
  • 91. Jerarquía de herencia y clases abstractas Mamiferos Ballena Caballo Humano Gorilla IMamiferosTerrestres numeroPatas() pensar() cuidarCrias() galopar() numeroPatas() pensar() numeroPatas() trepar() numeroPatas() nadar() I I I Animales Lagartija getNombre() respirar()
  • 92. Jerarquía de herencia y clases abstractas Mamiferos Ballena Caballo Humano Gorilla IMamiferosTerrestres numeroPatas() pensar() cuidarCrias() galopar() numeroPatas() pensar() numeroPatas() trepar() numeroPatas() nadar() I I I Animales Lagartija getNombre() respirar() A A
  • 93. Jerarquía de herencia y clases abstractas  Métodos abstractos:  Solo esta declarado, igual que las interfaces.  La clase debe ser abstracta.  La clase abstracta es la menos especializada. Personas Empleados Jefes Directores Alumno Método getDescripción Método abstracto Método getNombre Método setSubeSueldo
  • 95. Entity Framework  Principal medio de interacción de .NET con BD relacionales.  Object Relational Mapper (ORM) herramienta que simplifica el mapeo entre los objetos y las tablas.

Notas del editor

  1. Quinto a nivel global.
  2. La primera imagen hace referencia al ámbito o alcance local de las variables. La segunda imagen hace referencia al ámbito o alcance global de las variables.
  3. Determinados: Se saben cuantas veces se ejecutan viendo el código fuente. Indeterminados: No se puede saber cuantas veces se van a ejecutar sin antes ejecutarlo. Puede que nunca se ejecute.
  4. El código spaguetti es por el efecto de spaguetti en un plato. Esto por el goto y el gosub.
  5. Al hacer esto se da un pequeño error a la hora de imprimir el arrayEmpleados. Hacer que lo arreglen mediante getters en la clase.
  6. Cuando se pasan los parámetros se pasan por referencia lo que modifica el valor original de donde viene el parámetro.
  7. Se crean archivos separados para la interfaz, la clase y el main