lenguajes de programación: clases y objetos

40
Lenguajes de Programación: Clases y Objetos Autor(es ): Mtr. Luis Fernando Aguas

Upload: luis-fernando-aguas-bucheli

Post on 13-Jan-2017

177 views

Category:

Investor Relations


1 download

TRANSCRIPT

Page 1: Lenguajes de Programación: Clases y objetos

Lenguajes de Programación:Clases y Objetos

Autor(es):

• Mtr. Luis Fernando Aguas

Page 2: Lenguajes de Programación: Clases y objetos

Porque C# ? Primer lenguaje orientado a componentes

Basado en la experiencia de COM+ Soporte nativo para

Namespaces Versionamiento Desarrollo basado en atributos

El poder de C con la facilidad de VB Curva de aprendizaje mínima Mucho más limpio que C++ Más estructurado que VB

Page 3: Lenguajes de Programación: Clases y objetos

Sección 2: Elementos de C#

Forma y estructura Entendiendo los tipos del sistema Entendiendo el lenguaje C#

Page 4: Lenguajes de Programación: Clases y objetos

Forma y Estructura No hay archivos de encabezamiento (.H)

No es necesario “declarar” las clases y los tipos La declaración y el código están en un solo lugar

Hace que el código sea más consistente y mantenible Facilita la colaboración a nivel equipo de desarrollo Declaraciones accesibles: Metadata

Compilación condicional pero sin macros

Page 5: Lenguajes de Programación: Clases y objetos

Tipos definidos por el Sistema Construido sobre el Common Type System Conceptos básicos:

Todo es un objeto

Todo tiene herencia implícita de System.Object

Distinción entre valores y referencias

Por valor: tipos simples, enumeradores, estructuras

Por referencia: interfaces, clases, vectores

Page 6: Lenguajes de Programación: Clases y objetos

Tipos Simples Enteros

byte, sbyte (8bit), short, ushort (16bit) int, uint (32bit), long, ulong (64bit)

IEEE Floating Point double (precisión de 15-16 dígitos) float (precisión de 7 dígitos)

Numéricos exactos Decimal (28 dígitos significativos)

Cadenas de caracteres char string (referencia)

Boolean bool (no es intercambiable con int)

Page 7: Lenguajes de Programación: Clases y objetos

Enums Colección de elementos nombrados Fuertemente tipeados Mejor usar "color.Azul" que "3"

Mas legibilidad del código Tan liviano cómo un int

Ejemplo:enum Color { Rojo, Verde, Azul, Amarillo};

Page 8: Lenguajes de Programación: Clases y objetos

Vectores Inician en cero, vinculados por tipo Basadas en la clase System.Array de .NET Declaración con tipo y forma, pero sin límite

int[] SingleDim; int[,] TwoDim; int [][] Jagged;

Creación utilizando new con límites o inicializadores SingleDim = new int[20]; TwoDim = new int[,]{{1,2,3},{4,5,6}}; Jagged = new int[1][]; Jagged[0] = new int[]{1,2,3}

Page 9: Lenguajes de Programación: Clases y objetos

Interfaces

Declaración del contrato semántico entre partes Permite la orientación a componentes

Define la estructura y la semántica para propósitos específicos

Definición de métodos y propiedades abstractos Soporta herencia (múltiple) Ejemplo: interface IPersonaEdad

{ int AnioDeNacimiento {get; set;} int Edad(); }

Page 10: Lenguajes de Programación: Clases y objetos

public class Persona : IPersonaEdad{ private int iAnio;

public Persona() { }

public int AnioDeNacimiento { get { return iAnio;}; set { iAnio = value;}; }

public int Edad() { return Today()- AnioDeNacimiento }; }

Clases Implementación de código y datos Implementa interfaces Herencia simple Las clases contienen:

Campos: variables miembro Propiedades: valores

accedidos a través de get/set

Métodos: funcionalidad Especiales: eventos,

Indexadores, Delegates

Page 11: Lenguajes de Programación: Clases y objetos

Estructuras Un grupo de código y datos

Similar a las clases pero: No permite herencia Siempre son pasadas por valor

Clases vs. Estructuras Estructuras Contenedor de datos liviano, por valor Clases objetos, tipo referenciados

Desarrolladores C++! struct no es un class donde todo es público

Ejemplo: struct Point{ double X; double Y; void MoveBy(double dX, double dY) { X+=dX; Y+=dY; }}

Page 12: Lenguajes de Programación: Clases y objetos

Propiedades Mezcla entre campos y métodos Uso de propiedades para:

Implementación de miembros sólo lectura (omitiendo set) Validación en asignación Valores calculados o compuestos Exposición de valores en las interfaces

Ejemplo:

string Name { get { return name; } set { name = value; } }

Page 13: Lenguajes de Programación: Clases y objetos

Indexadores Forma consistente de construir contenedores Basados en las propiedades Permite el acceso indexado a objetos contenidos El índice puede ser de cualquier tipo Ejemplo:

object this[string index]{ get { return Dict.Item(index); } set { Dict.Add(index,value); } }

Page 14: Lenguajes de Programación: Clases y objetos

Delegates y Eventos Delegate

Similar a los punteros a funciones de C, C++ Fuertemente tipeados delegate void Clicked(Element e, Point p);

Eventos Modelo de eventos intrínseco al lenguaje (por fin) Declaración y llamada en la clase fuente del evento

Button.OnClick += MyClickHandler;

event Click OnClick;...OnClick(this,PointerLocation);

Page 15: Lenguajes de Programación: Clases y objetos

Atributos Similar a los atributos existentes de IDL Acceso declarativo a funcionalidad Extensible: atributos “Custom”

[Transaction(TransactionOption.Required)]class MyBusinessComponent { ... }

[PersonFirstName] String Vorname;[PersonFirstName] String PrimarioNome;

Page 16: Lenguajes de Programación: Clases y objetos

Instrucciones Muy “C”: control de flujo

if (<bool expr>) { ... } else { ... }; switch(<var>) { case <const>: ...; }; while (<bool expr>) { ... }; for (<init>;<bool test>;<modify>) { ... }; Do { ... } while (<bool expr>);

No muy “C”: lock(<object>){ ... };

Secciones críticas checked {...}; unchecked { ...};

Protección de sobrecarga de enteros

Page 17: Lenguajes de Programación: Clases y objetos

Foreach Iteración de colecciones y vectores Pueden ser utilizados en clases propias Acceso sólo lectura Ejemplo:

Point[] Points = GetPoints();foreach( Point p in Points ){ MyPen.MoveTo(Point.x,Point.y);}

Page 18: Lenguajes de Programación: Clases y objetos

Sobrecarga de Operadores Casi todos los operadores pueden ser sobrecargados No hay sobrecarga para

Asignaciones Operadores especiales

(sizeof, new, is, typeof) Ejemplo:

Total operator +(int Amount, Total t){ t.total += a;}

Page 19: Lenguajes de Programación: Clases y objetos

Acceso a los miembros Adopción del modelo C++

public todos pueden acceder protected sólo miembros de la herencia private sólo miembros de la clase

Expande el modelo C++: sealed no puede ser utilizado como clase base internal acceso público solamente en el assembly

Page 20: Lenguajes de Programación: Clases y objetos

Punteros, necesito punteros C# soporta

Tipo string intrínseco Modelo rico de colecciones Parámetros por referencia

void increment(ref int value, int by) Parámetros de salida

bool add(int a, int b, out int c)

Eliminación de la mayoría de las causas Pero, aún disponible: unsafe

unsafe void crypt(byte[] arr) { byte * b = arr; ... }

Page 21: Lenguajes de Programación: Clases y objetos

Manejo de Excepciones Muy similar a C++, SEH Se debe leer así:

try ejecutando este código ... ... Si se genera un error, catch lo que puedo llegar a

manejar ... ...finally permítame hacer alguna limpieza manual

Ejemplo: try { //... código}catch(SomeException e){ //... Control de error}finally{ //...salida “correcta”}

Page 22: Lenguajes de Programación: Clases y objetos

Namespaces Forma de agrupar LÓGICAMENTE clases

Un namespace puede contener a clases y a otros namespace Similar al concepto de COMPONENTE COM Pero desacoplado de la definición física

Se declaran con namespace Referenciados con using

Page 23: Lenguajes de Programación: Clases y objetos

Comentarios XML Forma consistente de crear documentación en el código ///: Todo lo comentado así va a parar a la metadata Ejemplo:

///<summary>/// Esta función permite calular el monto /// final incluyendo todos los impuestos /// </summary>public decimal GetTotalValue(){}

Page 24: Lenguajes de Programación: Clases y objetos

Sección 3: Las Herramientas

Framework SDK – herramientas básicas C# Compiler Visual Debugger NMake

VisualStudio.NET agrega Ambiente visual Asistentes y plantillas Ayuda “Inteligente”

Page 25: Lenguajes de Programación: Clases y objetos

Framework SDK Contiene al compilador C# (y VB, C++, JScript)

Se ejecuta desde la línea de comando Visual Debugger – GuiDebug

Acceso completo al runtime y los metadatos Herramientas

NMake, Security, Configuration, IL Disassembler, ... Gratis para todos

Page 26: Lenguajes de Programación: Clases y objetos

Ejemplos

“Hola mundo”

namespace Consola{ using System;public class Class1 { public Class1() {}

public static int Main(string[] args) {

Console.WriteLine("Hola, mundo");Console.Read();

return 0; } }}

Page 27: Lenguajes de Programación: Clases y objetos

Ejemplos – Comentarios XMLusing System;

/// <summary> /// Muestra en pantalla la frase "hola,

mundo" /// </summary>

Page 28: Lenguajes de Programación: Clases y objetos

Parte 2Desarrollo de Componentes

Contenido Introducción a componentes .NET Interoperabilidad con COM+

Page 29: Lenguajes de Programación: Clases y objetos

1. Introducción a Componentes .NET

Grupo de clases que están típicamente bajo un Namespace común Las clases que sean públicas se expondrán hacia fuera del componente Todo elemento “público” de cada clase se ve fuera de ella No se registra el componente en ningún lado

Page 30: Lenguajes de Programación: Clases y objetos

Ejemplo de Componente .NET en C#

Page 31: Lenguajes de Programación: Clases y objetos

Ejemplo de Componente .NET en C#

namespace Componente1{ using System;

/// <summary> /// MiCOmponente. /// </summary> public class MiComp1 { public MiComp1() { } public System.String MiFunc() /// <summary> /// Devuelve la hora actual. /// </summary> { return(System.DateTime.Now.ToString()); } }}

Page 32: Lenguajes de Programación: Clases y objetos

Componentes .NET Jerarquía de herencia Definición de Namespaces Implementación física Implementación de interfaces

Page 33: Lenguajes de Programación: Clases y objetos

Jerarquía de Herencia Independiente de los Namespaces Independiente de la implementación física

Page 34: Lenguajes de Programación: Clases y objetos

Definición de NameSpaces Sirve para ordenar las clases (repaso) Es una agrupación lógica

Page 35: Lenguajes de Programación: Clases y objetos

Ejemplo de Definición de Namespaces MSDNLatam MSDNLatam.Nucleo MSDNLatam.Nucleo.Datos MSDNLatam.Nucleo.Datos.SQL MSDNLatam.Nucleo.Datos.ADO MSDNLatam.Aplicacion MSDNLatam.Aplicacion.Interfaz MSDNLatam.Aplicacion.Reglas MSDNLatam.Aplicacion.Datos

Page 36: Lenguajes de Programación: Clases y objetos

Implementación Física DLLs Una DLL puede implementar uno o más Namespaces Varias DLLs pueden implementar un Namespace Nada que ver con COM Las DLLs no se bloquean Puedo tener varias versiones en una máquina

Page 37: Lenguajes de Programación: Clases y objetos

Implementación Física - Assembly

Unidad de instalación y versionamiento Colección de archivos físicos Tiene un número de versión con formato XX.YY.Xx.yy XX e YY tienen que ser exactamente los mismos que tenga

registrados los clientes

Page 38: Lenguajes de Programación: Clases y objetos

Servicio de Componentes - (Framework .NET)· Provee:

· Transacciones (DTC, TIP, XA, COMTI) · Auto Completion· Activación “Just in time”· Pooling de objetos· Colas · Eventos · Seguridad basada en roles

Page 39: Lenguajes de Programación: Clases y objetos

Servicio de Componentes Basados en COM+ Componentes .NET se “hostean” dentro de aplicaciones COM+ Tienen la capacidad de auto registrarse en COM y dentro de

una aplicación

Page 40: Lenguajes de Programación: Clases y objetos

¿Cómo seguimos?

Encontrará varios “ejercicios” de código junto a esta presentación

Cuando los haya realizado, podrá acceder a la siguiente presentación de C#

No olvide, los grupos de noticias están allí... Para que compartamos información