Programacion II - Clases

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

    &ampos

    &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