Upload
jesuscerros
View
220
Download
0
Embed Size (px)
Citation preview
8/16/2019 Programacion II - Clases
1/37
Programación 2Visual C-Sharp
1
8/16/2019 Programacion II - Clases
2/37
Conceptos Generales
2
• Qué es lenguaje de programación?
• Cuáles son los lenguajes de programación queinclue la !amilia "icroso!t Visual Studio?
•
Qué tipos de lenguajes de programaciónconoce?
• Conoce el origen histórico del lenguaje deprogramación C#?
• Cuáles son las !ormas en que los lenguajes deprogramación procesan el código !uente?
8/16/2019 Programacion II - Clases
3/37
$enguaje de Programación
3
%s un lenguaje dise&ado para descri'irel conjunto de acciones consecuti(as
que un equipo de'e ejecutar)
Por lo tanto* un lenguaje deprogramación es un modo práctico
para que los seres humanos puedan
dar instrucciones a un equipo)
8/16/2019 Programacion II - Clases
4/37
+ipos de $enguajes deprogramación
4
Los lenguajes de programación generalmente se
dividen en dos grupos principales en base alprocesamiento de sus comandos:
Lenguajes Imperativos
Lenguajes Funcionales
8/16/2019 Programacion II - Clases
5/37
$enguaje de programaciónimperati(o
5
Es un programa mediante una serie de comandos,
agrupados en bloques y compuestos de órdenes
condicionales que permiten al programa retornar a un
bloque de comandos si se cumple la condición.
No obstante, los lenguajes imperativos estructurados
carecen de fleibilidad debido a la secuencialidad de
las instrucciones.
8/16/2019 Programacion II - Clases
6/37
$enguaje de programación!uncional
6
!n lenguaje de programación funcional"a menudollamado lenguaje procedimental # es un lenguaje que
crea programas mediante funciones, devuelve un
nuevo estado de resultado y recibe como entrada el
resultado de otras funciones.
$uando una función se invoca a s% misma, &ablamos
de recursividad.
8/16/2019 Programacion II - Clases
7/37
,P+"./C,0 1% C1G,
27-01-2014 Introducción a Lenguaje Microsoft C# 7
8/16/2019 Programacion II - Clases
8/37
ntroducción a C-Sharp 3C#4
8
Es el nuevo lenguaje de propósito general diseñado por
Microsoft para su plataforma .NET. Sus principales
creadores son Scott Wiltamuth y nders !ejls"erg# $ste%ltimo tam"i$n conocido por ha"er sido el diseñador del
lenguaje Tur"o &ascal y la herramienta '( (elphi.
Se suele decir )ue *+ es el lenguaje nativo de .NE'
En resumen# *+ es un lenguaje de programación )ue
toma las mejores caracter,sticas de lenguajes
pree-istentes como isual /asic# 0ava o *11 y las
com"ina en uno solo.
8/16/2019 Programacion II - Clases
9/37
Que es el )0%+ 5rame6or7
9
• Una plataforma de ejecución manejada
• Una gran biblioteca de código reusable y
probado
• Multiplataforma
•
Multilenguaje
• Un Ecosistema de Objetos consistente
8/16/2019 Programacion II - Clases
10/37
10
)0%+ 5rame6or7 289:
8/16/2019 Programacion II - Clases
11/37
11
,pen Source?
Q C Sh 3C#4
8/16/2019 Programacion II - Clases
12/37
Que es C-Sharp 3C#4
12
De la Familia de { }, [ y !
De propósito general Multiparadigma"
◦ Orientado a objetos
◦ Funcional
◦ Estructurado
◦ #rocedural
◦ $mperati%o
Manejado De tipos seguros
&on &apacidades de metaprogramación
;i'li t
8/16/2019 Programacion II - Clases
13/37
;i'liotecas
13
2sing.System 3 /i"lioteca "4sica contiene todas las llamadas m4s
importantes
2sing.System.*ollections.5eneric 3 estamos llamando colecciones genericas
2sing.System.6in) 3 Estamos utili7ando 6in8s
2sing.System.Te-t 3 Estamos utili7ando funcionalidades de Te-to
2sing.System.Threading.Tas8s 3 Estamos utili7ando o utili7ar llamadas a los
elementos multihilos# como Tas8 o 9ay 2sing.System.*ollections 3 rreglos# o colecciones especiales
2sing.System.*onfiguration 3 &ermite crear o"jetos de configuración
2sing.System.(ata 3 )u, se encapsula todo el aceso a datos# o definir otras
fuentes de datos
2sing.System.(eployment 3 Manipular y tener acceso a un sistemas de
(eployment utili7ando instaladores.
;i'li t
8/16/2019 Programacion II - Clases
14/37
;i'liotecas
14
2sing.System.(ynamic 3 volver mas din4mica
2sing.System.5lo"ali7ation 3 &odemos tener herramientas para facilitar el
manejo de cadenas# fechas# etc.
2sing.System.:; 3 todo el acceso a string y flujo del sistema# como imprimir en
consola# leer archivos# carpetas# leer fuentes de datos de otros lugares.
2sing.System.Media 3 Manipular im4genes# recursos# audio y video
2sing.System.Net 3 todas las comunicaciones# accesos a puertos# protocolosde comunicación
2sing.System.'eflection 3 est4 detr4s del
8/16/2019 Programacion II - Clases
15/37
;i'liotecas
15
2sing.System.(iagnostics 3 &oder crear instrumentación# como herramientas o
metodolog,a para tener accesos a sa"er la salud de nuestra aplicación# y asi
guardar log.
2sing.System.Te-t 3 Manipulacion de Te-to
2sing.System.Threading 3 Sirve para manejo multihilos
2sing.System.Timers 3 *omponentes )ue se anclan al reloj del sistemas# para
poder tener mecanismos para ejecutar código cada determinado periodo detiempo
2sing.System.We" 3 acceso a We"# encapsula S&.NET# protocolos de
cone-ion a http# etc
2sing.System.Windo9s 3 (a acceso a li"rer,as de Windo9s
2sing.System.-ml 3 li"rer,as para acceso y manipulación de =M6
8/16/2019 Programacion II - Clases
16/37
Caracter
8/16/2019 Programacion II - Clases
17/37
Sistema de tipos
17
De'ne los tipos b(sicos a usar en toda la
plataforma
Establece un com)n denominador entre losdiferentes lenguajes
#ro%ee estatutos de seguridad y de con%ersiónentre tipos
+ipos 'ase
8/16/2019 Programacion II - Clases
18/37
+ipos 'ase
18
&lases Estructuras
◦ *ipos #rimiti%os
Enumeraciones $nterface
Delegados
=+odo hereda de Sstem),'ject>
+ipos Primiti(os
8/16/2019 Programacion II - Clases
19/37
+ipos Primiti(os
19
Date *ime
Decimal
Double
-ingle
$nt./
$nt01
$nt/2
$a Clase String
8/16/2019 Programacion II - Clases
20/37
$a Clase String
20
Una colección de caracteres Unicode
$nmutable *iene los operadores sobrecargados para emular
los tipos por %alor
#uede contener caracteres nulos -e puede acceder a sus elementos a tra%3s de
un inde4ador
#ermite darle formato a tipos por %alor
#ermite con%ertir tipos por %alor a cadenas
&5 /67 " $nterpolación de cadenas
;i'lioteca de Clases
8/16/2019 Programacion II - Clases
21/37
;i'lioteca de Clases
21
8epositorio com)n de funcionalidad
Organi9ado por espacios de nombres
◦ Usando la palabra cla%e namespace
#ro%ee acceso a funcionalidad del sistema
Funcionalidad probada y segura
Clases
8/16/2019 Programacion II - Clases
22/37
Clases
22
-on los blo:ues fundamentales de código en
6;E*
-on la abstracción de
otro objeto
*ienen comportamiento y almacenan datos
6
*ienen miembros 6
#ueden soportar tipos gen3ricos
"iem'ros de una Clase
8/16/2019 Programacion II - Clases
23/37
"iem'ros de una Clase
23
&os
&onstantes
#ropiedades ?
M3todos
&onstructores?
Destructores
E%entos
$nde4adores?
Operadores
*ipos @nidados
Clases
8/16/2019 Programacion II - Clases
24/37
Clases
24
Aas clases pueden tener diferentes ni%eles de acceso◦ public
◦
pri%ate◦ internal
◦ protected
◦ protected internal El proceso de crear un objeto a partir de una clase se
llama instanciación y se usa la palabra cla%e BneC #ueden ser declaradas como est(ticas, usando la palabra
cla%e Bstatic #ueden de'nirse como parciales y distribuirse en
m)ltiples arci%os f=sicos usando la palabra cla%eBpartial
Aa erencia de clases permite e4tender
8/16/2019 Programacion II - Clases
25/37
"étodos
25
&ontienen el código ejecutable dentro de las clases
*iene 'rma "
◦ ;ombre del m3todo
◦ *ipos y orden de los par(metros
◦ *ipo de retorno
Un M3todo puede no regresar ning)n %alor usando la palabra
cla%e B%oid
#ueden tener diferentes modi'cadores de acceso!
#ueden enfor9ar o limitar la erencia
◦ public
◦ pri%ate
◦ internal
◦ protected
◦ protected internal
◦ abstract
◦ sealed
◦ %irtual
◦ o%erride
◦ protected internal
"étodos
8/16/2019 Programacion II - Clases
26/37
"étodos
26
Un m3todo se puede ocultar
usando la palabra cla%e BneC
#ueden permitir pasar par(metros por %alor o por
referencia
◦ #alabra cla%e Bref
-e pueden especi'car par(metros de salida con la
palabra cla%e Bout
&5 /67 se pueden iniciali9ar par(metros de salida #ara 'nali9ar la ejecución yo refresar un %alor se usa la
palabra cla%e Breturn
"étodos
8/16/2019 Programacion II - Clases
27/37
"étodos
27
Aos m3todos pueden ser gen3ricos
Aos m3todos pueden ser ejecutados as=ncronamente
-e puede simular una colección a tra%3s de
iteradores
◦ #alabra cla%e Byield return
Aos m3todos se pueden sobrecargar
Aos par(metros pueden iniciali9arle en la declaración,
%ol%i3ndolos opcionales
Aos m3todos se pueden Bescribir en diferentes arci%os
f=sicos usando la palabra cla%e Bpartial
$as Propiedades
8/16/2019 Programacion II - Clases
28/37
$as Propiedades
28
Aas propiedades son tipos especiales de m3todos,
encapsulados por el sistema
#ueden ser de lectura, escritura y lecturaescritura
&ada elemento puede tener un modi'cador de acceso
independiente
@ diferencia de las %ariables, las propidades pueden
implementar lógica
&5 /67 " -e mejoró la iniciali9ación de %alores con
iniciali9adores de autopropiedades6
Varia'les alcance
8/16/2019 Programacion II - Clases
29/37
Varia'les alcance
29
-on unidades de almacenamiento de datos *ienen nombre, ciclo de %ida y alcance
E4isten %arias categor=as "
El compilador de &5 ace cumplir %arias reglas "
◦ Aas %ariables siempre tienen :ue estar iniciali9adaspara ser usadas
◦ Aa asignación siempre se debe de dar con %ariables del
mismo tipo ◦ El compilador puede inferir el tipo a asignar usando la
palabra cla%e B%ar
◦ De instancia
◦ Est(ticas
◦ @rreglos
◦ Aocales
◦ #ar(metros por %alor
◦ #ar(metros por referencia
◦ #ar(metros de salida
Varia'les alcance Una for
ma de iniciali9ar una clase con su %alor
8/16/2019 Programacion II - Clases
30/37
Varia'les alcance
30
Una forma de iniciali9ar una clase con su %alor
predeterminado es usando el operador Bdefault
Aas %ariables se pueden asignar al momento de
declararlas
Aas %ariables est(n limitadas al blo:ue {} en el :ue
est(n contenidas, y su B%ida termina justo al 'nal del
blo:ue
Aas %ariables creadas fuera de un blo:ue, pueden ser
%isuali9adas dentro del blo:ue, pero no funciona a la
in%ersa
El nombrado de las %ariables es sensible a may)sculas
◦ *odo &5 es sensible al uso de may)sculas y min)sculas
,peradores
8/16/2019 Programacion II - Clases
31/37
,peradores
31
-on s=mbolos :ue permiten ejecutar operaciones en lassentencias de código
-e di%iden en %arios tipos de operadores
El orden en :ue se e%al)an los operadores esta basadoen la precedencia del operador, la asociati%idad y los
par3ntesis Aa asociati%idad indica la dirección en la :ue se e%al)an
las e4presiones
◦ #rimarios
◦ Unarios
◦ Multiplicati%os
◦ @diti%os
◦ De corrimiento
◦ 8elacionales y de tipo
◦ De e:uidad◦ Aógicos, &ondicionales y de nulidad
◦ De asignación y funcionales
Primarios @[G @narios
8/16/2019 Programacion II - Clases
32/37
Primarios
32
@[G
4II
G
;eC
*ypeof
&eced
UnceJed
Default
Delegate
@narios IG
G
LG
G
G
@Cait
NG
?G6
u (s s s
8/16/2019 Programacion II - Clases
33/37
s
33
4 ? y
4 y
4 P y
s s
4 Q y
4 K y
4 QR y
4 QR y
$s
as
4 KK y
4 QQ y
%quidad $ógicos es
8/16/2019 Programacion II - Clases
34/37
q
34
G RRy
GL R y
g es
4 N y
4 S y
4 T y
4 NN y
4 >> y
"
1enulidad
4 y
4 6 y
1e asignación !uncionales
8/16/2019 Programacion II - Clases
35/37
g
35
G R H
G IR H
G R H
G ?R H
G R H
G PR H
G NR H
G .R H
G TR H
G QQR H
G KKR H
RK
"anejo de eBcepciones
8/16/2019 Programacion II - Clases
36/37
j p
36
Aas e4cepciones son errores de ejecución representados
como objetos6 Aos objetos se pueden manejar usando el blo:ue
*ry
{
V
}
&atc [
{
666
}
['nally{
V
}
"anejo de eBcepciones
8/16/2019 Programacion II - Clases
37/37
j p
37
*ambi3n se pueden lan9ar e4cepciones manualmente
usando la palabra cla%e BtroC Aas e4cepciones se pueden concreti9ar eredando del
objeto E4ception
-i una e4cepción no es atrapada, la aplicación se da porterminada
&5 /67" Aos blo:ues Bcatc y B'nally ya soportan
BaCait &5 /67" Aos blo:ues Bcatc pueden soportar 'ltros6