C#
C#
Bajo Nivel –
Lenguaje Ensamblador
Máquina
Nivel Medio –
Nivel Interacción Sistema C…
con la Operativo
Computadora
C#, C++…
Alto Nivel –
Aplicaciones
Java, PHP,
Python…
Etapas en el Desarrollo del Software
Toma de Requisitos
Tipo de Arquitectura Planificación
Lenguaje deTecnologías Frameworks
Equipo Desarrollo
Plan de
Aplicación del Software Programación Server y BBDD Desarrollo Trabajo
Implementación
Fase de Pruebas
Despliegue y Explotación
Soporte Técnico
Toma de Requisitos
Lista de
Requisitos
Documentación
del Producto
Definición de la
documentación
por expertos
Definición del
proyecto para
los
programadores
Planificación
• Consola, Desktop
Tipo de Aplicación • Cliente-Servidor, Web
• Mobile …
• Una Capa
Arquitectura del • Multicapa
Software • SOA …
• C#
Lenguaje de • Java
Programación • Python …
• .NET, Java EE, LAMP…
Tecnologías • MySQL, SQL Server, Oracle…
• Hibernate, ADO .NET Entity Framework …
Número y • Diseñadores
Habilidades del • Analistas
• Programadores …
Equipo
• Etapas
Plan de Desarrollo • Recursos …
Otros
Implementación
Tareas definidas
Se escribe el código
Diseño
fuente en base a:
Arquitectura
Fase de Pruebas
Desarrollo del
Instalador
Soporte para el
Despliegue
Formación a
los Empleados
Soporta
Clases e
Patrones de
Interfaces
Pureza
Orientación
a
Objetos
Las Funciones
Propiedades,
se pueden
Métodos y
tratar como
Eventos
Valores
Principales Características. Parte 1
Soporta el Tipo
Lenguaje Type-Safe
Estático
Tipo
Seguro
Fuertemente Ejecución en
tipado Sandbox
Principales Características. Parte 1
Recolector de
Common Basura
Language
Gestión de Runtime Mejor Gestión
Memoria de Memoria
No Elimina los
Punteros
Principales Características. Parte 1
Soporte
Multiplataforma
Estructura básica de una aplicación
Imprimir en pantalla: Hello World
A destacar
Variables
Nombre
Se Componen Modificadores
de: de Acceso
Nombre debe
Variable comenzar por Tipo de Datos
una letra o “_”
No se puede
usar Palabras If, for, string …
Reservadas
Variables - Composición
Modificador de Acceso
Modificado Función
public Sin acceso restringido
protected Acceso limitado a las clases o tipos derivados de la clase en la que
está la variable
Internal El acceso se limita al código de un mismo ensamblado pero no
tendrá acceso en un código ensamblado diferente.
protected El acceso está limitado al conjunto actual o a los tipos derivados de
internal la clase contenedora.
Private El acceso está limitado a la clase en la que está la variable
Variables – Tipos de Datos
Numéricos
Struct bool
Valor:
System.Value
Type Estructuras
Enum personalizad
as
class
Tipo de datos
interface
delegate
Referencia:
System.Objec
t
object
string
array
Variables – Tipos Numéricos
Tipo Representa Rango Default
Value
bool Valor booleano True o False False
byte Entero sin signo de 8-bit 0 to 255 0
char Carácter Unicode 16-bit U +0000 to U +ffff '\0'
decimal Valores decimales de precisión de 128 (-7.9 x 1028 to 7.9 x 1028) / 100 to 28 0.0M
bits con 28-29 dígitos significativos
double Tipo de coma flotante de doble precisión (+/-)5.0 x 10-324 to (+/-)1.7 x 10308 0.0D
de 64 bits
float Tipo de coma flotante de precisión simple -3.4 x 1038 to + 3.4 x 1038 0.0F
de 32 bits
int Tipo entero con signo de 32 bits -2,147,483,648 to 2,147,483,647 0
long Tipo entero con signo de 64 bits -9,223,372,036,854,775,808 to 0L
9,223,372,036,854,775,807
sbyte Tipo entero con signo de 8 bits -128 to 127 0
short Tipo entero con signo de 16 bits -32,768 to 32,767 0
uint Tipo entero sin signo de 32 bits 0 to 4,294,967,295 0
Tipo entero sin signo de 64 bits
ulong 0 to 18,446,744,073,709,551,615 0
Tipo entero sin signo de 16 bits
ushort 0 to 65,535 0
Variables – Enum
class pedido
{
public int numero;
public DateTime FechaHora;
public int situacion;
}
Enum situacion
{
Abierto,
Facturado,
Cancelado
}
Variables – Tipos de Referencia
class
interface
delegate
Tipos de Referencia
Object
String
Array …
Constantes - Literales
Constantes
Pueden ser de cualquier tipo básico
- Literales
85 /* decimal */
0x4b /* hexadecimal */
0x 30 /* int */
30u /* unsigned int */
Decimal Prefijo 30l /* long */
30ul /* unsigned long */
Enteros 0X
Hexadecimal
(U)
Unsigned
Sufijo
(L) Long
Constantes Punto Flotante
parte fraccionaria
entero
2.525E1
parte exponencial
punto decimal
Ejemplos Ejemplos
Caracteres “hola, \
que tal?“
simples
Cadenas “hola, " “que" “tal?“
Operador Ternario
case valor2:
// código 2
break;
}
Flujos de Ejecución – Parte II
switch (variable o valor)
{
case valor1:
case valor2: Switch … Case
case valor3:
// código 1
break;
case valor4:
case valor5:
case valor6:
// código 2
break;
}
Flujos de Ejecución – Parte II
switch (variable o valor)
{
default:
// código 3
break;
}
Ejemplo:
Estructuras de Repetición– Parte I
While
while (condición)
{
//bloque de código
}
• C#5-Desarrollar un programa que permita la carga de 10 valores por
teclado y nos muestre posteriormente la suma de los valores
ingresados y su promedio.
do do … while
{
//bloque de código
} while (condición);
Estructuras de Repetición– Parte I
int i = 1;
Console.WriteLine(i);
i++;
}
Estructuras de Repetición– Parte I
int i = 0;
while (i < 10) Continue
{
i++;
if (i % 2 == 0)
continue;
Console.WriteLine(i);
}
Console.ReadKey();
Estructuras de Repetición– Parte II
For
for (inicializador; condición; iterador)
Bloque de Código
• C#7-Programa que muestre la tabla de multiplicar
Estructuras de Repetición– Parte II
Foreach
foreach (tipo elemento in colección)
{
//bloque de código
}
Ejemplo
Arrays
Valor
25 78 21 31 25 17 82 63 54 42
0 1 2 3 4 5 6 7 8 9
Índice
Arrays – Declaración
Ejemplo
1 2 3 4 5 6 7 8 9 10 11
0 1 2 3 4 5 6 7 8 9 10
X
}
Strings
Creación de una
Mediante el operador de concatenación (+)
Cadena
A L E X A N D R E G O N Z A L E Z
0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
Strings - IndexOf
string nombre = "Alexandre Gonzalez - Programando en C #";
int numero = nombre.IndexOf ("Programando");
// Retornará 22
string prueba = String.Format("Formato de la cadena con un {0} parámetro. Ahora son las {1}. Valor numérico: {2}", 1, DateTime.Now, 15.5);
Console.WriteLine(prueba);
Console.ReadKey();
Programación Estructurada vs
Programación Orientada a Objetos
Orientada a
C#, Java, etc..
Objetos
Programación
C, Pascal,
Estructurada
etc…
Programación Estructurada vs
Programación Orientada a Objetos
Método
Procedimiento
Datos Objeto …
Procedimiento
Método
Programación
Programación Orientada a
Datos Globales Procedimiento
Estructurada Objetos
Método
…
Datos Objeto …
Procedimiento Método
Programación Estructurada vs
Programación Orientada a Objetos
Peor
Más orientado a Rendimiento
bajo nivel
Aplicaciones de
Es el paradigma
Sistemas más empleado
integrados Programación C# y Java, sus actualmente
Programación C: su principal Orientada a principales
Estructurada exponente Objetos exponentes
Ejecución Reutilización de
Secuencial Código
Abstracción
Herencia
Orientación a Objetos - Abstracción
Problema Simple 1
Problema Simple X …
Abstracción
Problema Simple 1
Problema Simple X…
Programación Orientada a Objetos - Abstracción
Solución 1 Importante
Solución N
Programación Orientada a Objetos - Encapsulación
Clase
MODIFICADORES DE ACCESO
Métodos e Public
instancias públicas Private
Protected
protected internal
internal
Métodos e
instancias privadas
Programación Orientada a Objetos - Encapsulación
Valor Real
GET
Mi Valor
SET
Objeto 1
Objeto 2
Objeto N
Objeto 3
Object
Objeto …
Objeto Base
Objeto N
Programación Orientada a Objetos - Polimorfismo
El polimorfismo:
consiste en la
En un Transporte: Como pasajero modificación del
Comportamiento funcionamiento interno
de una Persona de un método heredado
de un objeto padre
En el Trabajo: Como Empleado
Virtual
C#
Electrodoméstico Override
+Conectar(): boolean
Java @override
Televisión Heladera
+Conectar(): boolean +Conectar(): boolean
Principales Ventajas de la POO
Reutilización de
Código
Mejor lectura y
mantenimiento
1 Elemento Acercar la del código
programación al
1 Objeto mundo real Mejor creación
de Bibliotecas
Peor
Rendimiento
Ejemplo – 4 pilares
• Objeto Persona:
• que es una persona?
• Es un ser vivo del mundo real que interactúa con su entorno natural
• Características?
• Nombre, ojos, boca nariz
• Comportamiento?
• Habla, camina corre, bebe.
Creando clases
• Declarar una clase
Class <nombreClase>
{
<atributos>
<métodos o funcionalidades>
}
• Declarar una atributo
<tipoatributo><nombreatributo>;
Creando clase y atributos
Asignando valores y atributos
• Recuerde que en el
área de la clase
solo se realizan
asignaciones, no se
puede realizar
operaciones.
• Las operaciones se
realizan en los
métodos de la clase
• Una clase puede
tener como
atributo otra clase
Métodos
• Es un conjunto de instrucciones a las que se asocia un nombre de
modo que si se desea ejecutarlas basta referenciarlas a través dicho
nombre en vez de tener que escribirlas.
• Dentro de estas instrucciones es posible acceder con total libertad a
la información almacenada en los campos pertenecientes a la clase
dentro de la cual se definió el método
• Los métodos permiten realizar las acciones los atributos de las clases,
estos pueden devolver un determinado valor al finalizar su ejecucion,.
Sintaxis
• Declarar un método
<tipoDevolver> <nombreMétodo>(<parámetros>)
{
<instrucciones>
}
<nombreMétodo>(<valoresParámetros>)
• <objeto>.<nombreMétodo>(<valoresParámetros>)
Dentro de la misma clase
Llamar método de un objeto creado
Trabajando con parámetros
• Programa que identificar si una persona es es mayor de edad o
menor de edad, así mismo debe mostrar el nombre y la edad.
• Se debe crear la clase persona con los siguientes atributos:
• Nombre
• edad
• Asignar el dato “Pedro picapiedra” a la propiedad nombre y edad 25.
Creando la clase, propiedades y métodos
Llamando métodos
Otro
Continua-otro
Ejemplo – 4 pilares
• Objeto Persona:
• que es una persona?
• Es un ser vivo del mundo real que interactua con su entorno natural
• Caracteristicas?
• Nombre, ojos, boca nariz
• Comportamiento?
• Habla, camina corre, bebe.
Creando Clase
Definir nuestre Get y Set
Constructor
• Son métodos especiales que se define como miembros de esta y que
contienen código a ejecutar cada vez que se crea un objeto de esa
clase.
• Este código suele usarse para asignarle valor a los atributos de la clase
sobre todo cuando el valor de estos no es constante o incluya accione
mas allá de una asignación de valores.
• La ejecución del control siempre e inicia automáticamente después
de haberse inicializado todo los campo del objeto ya sea con los
valores iniciales que se hubiese especificado en su definición o
dejándolos con el valor por defecto de su tipo.
Sintaxis
<modificando><nombre clase>(<parámetros)>)
{
<Codigo>
}
Constructores
Creando Clase
Definiendo get y set con constructores
Colecciones
• En muchas aplicaciones se desea poder crear y administrar grupos de
objetos relacionados. Existen dos formas de agrupar objetos:
mediante la creación de matrices de objetos y mediante la creación
de colecciones de objetos.
• Las colecciones proporcionan un método más flexible para trabajar con
grupos de objetos. A diferencia de las matrices, el grupo de objetos con el
que trabaja puede aumentar y reducirse dinámicamente a medida que
cambian las necesidades de la aplicación. Para algunas colecciones, puede
asignar una clave a cualquier objeto que incluya en la colección para que
pueda recuperar rápidamente el objeto con la clave asignada.
• Una colección es una clase, de modo que antes de poder agregar
elementos a una nueva colección, debe declararla.
• Si su colección se limita a elementos de solo un tipo de datos, puede
utilizar una de las clases en el espacio de
nombres System.Collections.Generic. Una colección genérica cumple la
seguridad de tipos para que ningún otro tipo de datos se pueda agregar a
ella. Cuando recupera un elemento de una colección genérica, no tiene que
determinar su tipo de datos ni convertirlo.
• .NET Framework
• Conjunto de herramientas y clases que soporta el desarrollo de aplicaciones
con c#
• Entre las varias clases del framework de uso frecuente, están las colecciones,
que implementan diferentes estructuras de datos tales como:
• Listas
• Pilas
• Filas
• Tablas hashs
Colecciones
Queue
Stack
HashTable
No Genéricas
(System.Collection)
Colecciones BitArray
Genéricas
SortedList
ArrayList
Colecciones - SortedList
No necesita intervención
Tipos Básicos: int o string
Pares
SortedList
Clave/Valor Tipos Personalizados:
Objeto IComparer Es necesario proporcionar en
el constructor un objeto
La colección SortedList almacena los pares clave-valor en el orden ascendente de la clave de forma
predeterminada. La clase SortedList implementa interfaces IDictionary e ICollection, por lo que se puede
acceder a los elementos tanto por clave como por índice.
SortedList – Principales Propiedades
Capacity Número máximo de elementos que se pueden insertar en la colección
Keys Propiedad de solo lectura, que nos devuelve una coleccione con las claves que
contiene la lista
Value Propiedad es una lista de tipo ICollection que contiene los valores de la lista (la
colección está formada por los pares clave/valor)
SortedList – Principales Métodos
Recibe 2 parámetros del tipo objetc que se debe insertar en la colección
Add formando un par clave/valor
Este método nos devuelve una colección del tipo Ilist que contiene toda
GetKeyList las claves de la colección de la lista.
GetValueList Devuelve una colección de objetos de tipo ilist, pero conteniendo
los valores y no las claves como en el caso de GetKeyList
Ilist System.Collections.ArrayList
System.Collections.Specialized.Stri
ngCollection
Colecciones - Queue y Stack
1 2 3
3 2 1
LIFO
(Last-In, First Out)
Colecciones - Queue
Propiedades Count
Enqueue
Clase
System.collection Queue Dequeue
(FIFO)
Peek
Métodos TrimToSize
Clear
Constructor Icollection
Capacidad Inicial +
Factor Expansión
Ejemplo
Colecciones - Stack
Propiedades Count
Push
Clase Stack
System.collection
(LIFO) Pop
Peek
Métodos
Clear
Contains
Icollection
Constructor
Capacidad Inicial
Ejemplo
Ejemplo
Colecciones - ArrayList
Se expande al
Agregar un
Elemento
Almacenamiento
ArrayList
Dinámico
Se Contrae al
Quitar un
Elemento
Colecciones - ArrayList
Método Descripción
Add (object) agrega un elemento al final de la lista.
AddRange (ICollection) agrega a la lista los elementos de una colección pasada como parámetro.
AsParallel () devuelve un ParallelQuery que utiliza varios procesadores, si existen, para efectuar consultas a los elementos con Linq (incluso con lambda expressions).
AsQueryable () devuelve un objeto IQueryable, en el que es posible efectuar consultas con Linq, incluso usando expresiones lambda.
BinarySearch (object) busca el objeto pasado como parámetro en la lista, devolviendo su índice, si existe.
BinarySearch (object, IComparer) busca el objeto parámetro en la lista, considerando la comparación hecha por IComparer. En el caso de clases propias, es necesario definir un IComparer adecuado.
Cast <Tipo> () convierte los elementos de la lista al tipo definido, devolviendo una colección con los nuevos elementos.
Clear () quita todos los elementos de la lista.
Clone () devuelve una copia de ArrayList.
Contains (object) devuelve true si el objeto pasado como parámetro existe en la lista, de lo contrario, devuelve false. Copiar una cierta cantidad (cuarto parámetro) de elementos de la
lista, a partir de un índice (primer parámetro), a un Array (segundo parámetro) de otro índice en esa matriz (tercer parámetro).
GetEnumerator () devuelve una colección IEnumerator con los elementos de la lista, sin embargo, en IEnumerator, los elementos no se pueden cambiar, sólo leídos.
GetRange (int, int) devuelve un ArrayList que contiene una cierta cantidad (segundo parámetro) de elementos del índice especificado (primer parámetro).
IndexOf (object) esta función devuelve el índice (cero-based) del objeto buscado en la lista, si existe.
Insert (int, object) el método Insert agrega un elemento en la lista en una posición determinada. Los elementos después de este punto se desplazan una posición adelante.
InsertRange (int, ICollection) similar a Insert, pero inserta una colección de elementos en lugar de un solo elemento.
LastIndexOf (objeto) devuelve el índice de la última instancia del objeto buscado en la lista, si el objeto no se encuentra, el resultado es -1 (así como en la mayoría de los métodos de
búsqueda).
OfType <Tipo> () devuelve una colección con los elementos de la lista que son del tipo especificado. Esta lista resultante, sin embargo, es sólo para la visualización, sus elementos no se
pueden cambiar.
Remove (object) si se encuentra el objeto pasado como parámetro, se quita de la lista.
RemoveAt (int) quita de la lista el elemento de posición indicado en el parámetro.
RemoveRange (int, int) quita una cantidad de elementos (segundo parámetro) del índice indicado (primer parámetro).
Reverse () invierte el orden de los elementos.
SetRange (int, ICollection) inserta los elementos de una colección pasada como parámetro para el ArrayList desde una posición determinada. Los elementos existentes inicialmente en este rango
de valores se reemplazan por lo que se han agregado.
Sort () ordena los elementos en orden ascendente. Si los elementos son de una clase específica cuya comparación no es explícita, es necesario utilizar una sobrecarga de ese
método que recibe un objeto IComparer.
ToArray () devuelve un Array con los objetos de la lista.
Colecciones - Hashtable
Se expande al
Agregar un
Elemento
Almacenamiento
Dinámico
Se Contrae al
Quitar un
Hashtable Elemento
Basado en La Clave es un
Clave/Valor Objeto
Colecciones - Hashtable
Ejemplo
Count
Propiedades Keys
Value
Hashtable - Métodos
Add (object key, object value)
AsQueryable ()
Cast ()
Clear ()
Métodos
Clone ()
True = 1
Colección
BitArray
de Bits
False = 0
BitArray - Propiedades
Count
(Sólo Lectura)
Propiedades
Length
BitArray - Métodos
And (BitArray value)
Not ()
Or (BitArray value)
Métodos
Set (int index, bool value)
A1 A2 A3 A4 A5 A1 A2 A3 A4 A5
System.IO - Clases
BinaryReader • Lee datos primitivos de una secuencia binaria
Ejemplo de FileStream
Open ReadWrite
OpenOrCreate Write
Truncate
Ejemplo
Operaciones Básicas con Archivos y Directorios
Lectura
System.IO File
Escritura
Ejemplo
Operaciones Básicas con Archivos y
Directorios
Ejemplo – eliminar archivo
Ejemplo – Eliminar directorio
Renombrar archivo
Renombrando directorio
Introducción a LINQ
Language-Integrated Query
3.0
• Language Integrated Query. LINQ extiende el lenguaje a través de las
llamadas expresiones de consulta, que son parecidas a las sentencias
SQL y pueden ser usadas para extraer y procesar convenientemente
datos de arrays, clases enumerables, documentos XML, bases de
datos relacionales y fuentes de terceros.
• Es una de las funcionalidades muy importantes dentro del .NET
Framework
Introducción a LINQ - Tipos
LINQ a Objetos Colecciones
Soporte Intellisense
Escritura Ágil
Facilita la Depuración
Extensible
Mayor
Normalmente Legibilidad
devuelve
IEnumerable
Mejor Filtrado
Ofrece ventajas
LINQ To Object sobre sobre
“foreach”
Agrupamiento
Consultas
Compactas y
Portables
Ordenamiento
Ejemplo= LINQ a Objetc
Ejemplo
Ejemplo
LINQ To SQL
from c in db.Tabla
where c.Nombre == “Luis Antonio”
APLICACIÓN
select c;
LINQ To SQL
SQL Server
Creamos DB y Tabla en SQL Server
Agregar Elemento – LINQ to SQL
Realizar conexión con la base de datos
LINQ To SQL
Envía los
Lo convierte e
resultados en
forma de objeto
forma de
para el usuario
dataread
Provee
• Depuración
Acceso Todas
Integrado en • Verificación en
LINQ To XML Funcionalidades Tiempo de
.NET Framework
LINQ Compilación
• Tipado Fuerte
•…
Operadores y
Consulta estándar
Interfaz de programación
LINQ To XML
XAttribute XName
XNamespace
XCData
XNode
XComment
XNodeDocumentOrderComparer
XContainer
XNodeEqualityComparer
Xdocument
XObjectChange
XDocumentType
XObjectChangeEventArgs
Xelement
XObjectEventHandler
XText XProcessingInstruction
Ejemplo
Añadiendo elementos
Eliminado elemento