introduccion a programacion orientada a objetos

56
Introducción a C#

Upload: jose-armando-garcia

Post on 26-Sep-2015

14 views

Category:

Documents


1 download

DESCRIPTION

basado en c#

TRANSCRIPT

Slide 1

Introduccin a C#

1Origen y necesidad de un nuevo lenguajeC# (ledo en ingls C Sharp y en espaol C Almohadilla) es el nuevo lenguaje de propsito general diseado por Microsoft para su plataforma .NET.

Sus principales creadores son Scott Wiltamuth y Anders Hejlsberg.

C# es el nico que ha sido diseado especficamente para escribir cdigo para la plataforma .NET.

Programar usando C# es mucho ms sencillo e intuitivo

C# es el lenguaje nativo de .NET.

La sintaxis y estructuracin de C# es muy parecida a la de C++ o Java, esto facilita la migracin de cdigos escritos en estos lenguajes a C# y facilita su aprendizaje a los desarrolladores habituados a ellos. 2Caractersticas de C# Alguna de las caractersticas aqu sealadas no son exactamente propias del lenguaje sino de la plataforma .NET en general

Sencillez : C# elimina elementos innecesarios en .NET

El cdigo escrito en C# es autocontenido, lo que significa que no necesita de ficheros adicionales al propio fuente tales como ficheros de cabecera o ficheros IDL. El tamao de los tipos de datos bsicos es fijo e independiente del compilador, sistema operativo o mquina para quienes se compile (no como en C++), lo que facilita la portabilidad del cdigo. No se incluyen elementos poco tiles de lenguajes como C++ tales como macros, herencia mltiple o la necesidad de un operador diferente del punto (.) acceder a miembros de espacios de nombres (::). 3Caractersticas de C#Modernidad : Incorpora elementos tiles para el desarrollo de aplicaciones, por ejem. Tipos bsicos como decimal, string, bool, y la instruccin foreach.

Orientacin a Objetos : C# es un lenguaje de programacin orientado a objetos y soporta todas las caractersticas propias del paradigma de programacin orientada a objetos: encapsulacin, herencia y polimorfismo.

Orientacin a componentes: C# incluye elementos propios del diseo de componentes que otros lenguajes tienen que simular mediante construcciones ms o menos complejas. Es decir, la sintaxis de C# permite definir cmodamente propiedades, eventos o atributos.4Caractersticas de C#Gestin automtica de memoria: Todo lenguaje de .NET tiene a su disposicin el recolector de basura del CLR. Esto tiene el efecto en el lenguaje de que no es necesario incluir instrucciones de destruccin de objetos. Sin embargo, dado que la destruccin de los objetos a travs del recolector de basura es indeterminista y slo se realiza cuando ste se active ya sea por falta de memoria, finalizacin de la aplicacin o solicitud explcita en el fuente-, C# tambin proporciona un mecanismo de liberacin de recursos determinista a travs de la instruccin using.

Seguridad de tipos: C# incluye mecanismos que permiten asegurar que los accesos a tipos de datos siempre se realicen correctamente.

Instrucciones seguras: Para evitar errores muy comunes, en C# se han impuesto una serie de restricciones en el uso de las instrucciones de control ms comunes, por ejem.: el operador de igualdad (==) y el de asignacin (=).Caractersticas de C#Sistema de tipos unificado: en C# todos los tipos de datos que se definan siempre derivarn, aunque sea de manera implcita, de una clase base comn llamada System.Object, por lo que dispondrn de todos los miembros definidos en sta clase (es decir, sern objetos).

Extensibilidad de tipos bsicos: C# permite definir, a travs de estructuras, tipos de datos para los que se apliquen las mismas optimizaciones que para los tipos de datos bsicos.

Extensibilidad de operadores: Para facilitar la legibilidad del cdigo y conseguir que los nuevos tipos de datos bsicos que se definan a travs de las estructuras estn al mismo nivel que los bsicos predefinidos en el lenguaje, C# permite redefinir el significado de la mayora de los operadores cuando se apliquen a diferentes tipos de objetos.Caractersticas de C#Extensibilidad de modificadores: C# ofrece, a travs del concepto de atributos, la posibilidad de aadir a los metadatos del mdulo resultante de la compilacin de cualquier fuente informacin adicional a la generada por el compilador que luego podr ser consultada en tiempo ejecucin a travs de la librera de reflexin de .NET . Esto, que ms bien es una caracterstica propia de la plataforma .NET y no de C#, puede usarse como un mecanismo para definir nuevos modificadores.

Versionable: C# incluye una poltica de versionado que permite crear nuevas versiones de tipos sin temor a que la introduccin de nuevos miembros provoquen errores difciles de detectar en tipos hijos previamente desarrollados y ya extendidos con miembros de igual nombre a los recin introducidos. Para esto se toman dos medidas : Se obliga a que toda redefinicin deba incluir el modificador override, si no se considera redefinicin, entonces se considera que lo que se desea es ocultar el mtodo de la clase padre, de modo que para la clase hija sea como si nunca hubiese existido. Caractersticas de C#Eficiente: En principio, en C# todo el cdigo incluye numerosas restricciones para asegurar su seguridad a menos que se marquen regiones de cdigo como inseguras (modificador unsafe).

Compatible: Para facilitar la migracin de programadores, C# no slo mantiene una sintaxis muy similar a C, C++ o Java que permite incluir directamente en cdigo escrito en C# fragmentos de cdigo escrito en estos lenguajes, sino que el CLR tambin ofrece, a travs de los llamados Platform Invocation Services (PInvoke), la posibilidad de acceder a cdigo nativo escrito como funciones sueltas no orientadas a objetos.Escritura de aplicacionesEs importante resaltar que C# es sensible a las maysculas, lo que significa que no da igual la capitalizacin con la que se escriban los identificadores. Es decir, no es lo mismo escribir Console que COnsole o CONSOLE, y si se hace de alguna de las dos ltimas formas el compilador producir un error debido a que en el espacio de nombres System no existe ninguna clase con dichos nombres. En este sentido, cabe sealar que un error comn entre programadores acostumbrados a Java es llamar al punto de entrada main en vez de Main, lo que provoca un error al compilar ejecutables en tanto que el compilador no detectar ninguna definicin de punto de entrada.Estructura general de un programa en C#// Esqueleto de un programa C#using System;namespace MyNamespace1{ class MyClass1 { } struct MyStruct { } interface MyInterface { } delegate int MyDelegate(); enum MyEnum { }

namespace MyNamespace2{ Class MyClass2 { public static void Main() { } } }}

Escritura de aplicacionesusing System;namespace MyNamespace1 { class HolaMundo{public static void Main(){ System.Console.WriteLine(Hola Mundo!);}}}El mtodo Main Al escribir Main hay que:Utilizar una M mayscula, como en MainDesignar un Main como el punto de entrada al programa Declarar Main como public static void Main Un Main puede pertenecer a mltiple clasesLa aplicacin termina cuando Main acaba o ejecuta un return La sentencia using y el espacio de nombres System.NET Framework ofrece muchas clases de utilidadOrganizadas en espacios de nombresSystem es el espacio de nombres ms utilizadoSe hace referencia a clases por su espacio de nombres

La sentencia usingSystem.Console.WriteLine("Hola, mundo");using System;Console.WriteLine("Hola, mundo");Operaciones bsicas de entrada/salida La clase ConsoleLos mtodos Write y WriteLine Los mtodos Read y ReadLine La clase Console Permite acceder a las secuencias estndar de entrada, salida y error Slo tiene sentido para aplicaciones de consola Entrada estndar: tecladoSalida estndar: Pantalla Error estndar: Pantalla Es posible redireccionar todas las secuenciasLos mtodos Write y WriteLine Console.Write y Console.WriteLine muestran informacin en la pantalla de la consola WriteLine enva un fin de lnea/retorno de carroAmbos mtodos son sobrecargados Es posible emplear una cadena de formato y parmetros Formatos de textoFormatos numricosLos mtodos Read y ReadLine Console.Read y Console.ReadLine leen informacin introducida por el usuario Read lee el siguiente carcter ReadLine lee toda la lnea introducidaIntroduccin a la Programacin Orientada a Objetos

El Paradigma de Programacin Orientado a Objetos Es una tcnica de programacin que usa objetos y sus interacciones para disear aplicaciones y buenos programas de computadora. Este paradigma proporciona una forma particular de programar, ms cercana a la manera de como expresamos las cosas en la vida real.

En la programacin orientada a objetos tenemos que disear nuestros programas en trminos de objetos, propiedades y mtodos. Estos conforman los elementos principales de este paradigma. La programacin orientada a objetos expresa un programa como un conjunto de estos objetos, que colaboran entre ellos para realizar tareas. Esto permite hacer los programas y mdulos ms fciles de escribir, mantener y reutilizar.Abstraccin

Encapsulamiento

Modularidad

JerarquaElementos del Modelo Orientado a Objetos20AbstraccinLa Abstraccin denota las caractersticas esenciales de un objeto que lo distingue de otras clases de objetos proveyndolo de fronteras conceptuales de definicin muy claras y dentro de una perspectiva funcional.

En el desarrollo de sistemas esto significa centrarse en lo que es y lo que hace un objeto antes de decidir cmo debera ser implementado.

La abstraccin es el paso de un objeto del mundo real a un objeto abstracto o a la informacin constructiva de una clase u objeto que sirva como componente de la solucin.

La Abstraccin es una descripcin especial simplificada de un sistema que hace nfasis en ciertos rasgos y suprime otros.Abstraccin

EncapsulamientoEl Encapsulamiento es el proceso mediante el cual se ocultan todos los detalles de un objeto que no contribuyen a sus caractersticas esenciales de uso, es decir, este principio nos indica que debemos ocultar la complejidad constructiva del mdulo innecesaria para que otros objetos lo usen o se comuniquen con l sobre todo por motivos de seguridad y de la integridad del mdulo.

Este principio nos propone fragmentar las abstracciones en dos partes principales, una parte constitutiva y otra parte de interfaz o servicio visible a comunicaciones o servicios.

De esta manera la complejidad con la que se elabora cierta abstraccin queda a salvo y no preocupa a capas superiores de abstraccin.Encapsulamiento

ModularidadLa Modularidad es una particin funcional de todo el sistema. Cada mdulo o parte del sistema debe contar tanto con una funcionalidad clara y relativamente sencilla como con una facilidad de combinarse con otros mdulos.A los mdulos se le ha llamado tambin paquetes unidades.

Un mdulo es una unidad de programa donde se encuentran implementadas una coleccin de recursos que pueden ser utilizados por uno o ms programas

Los mdulos se compilan por separados y se caracterizan fundamentalmente por su interfaz y su implementacin permitiendo la ocultacin de la informacinModularidad

26JerarquaLa jerarqua es el orden por niveles de todas las abstracciones.

El enfoque orientado a objetos tiene una sola jerarqua, jerarqua de clases.

Las dos partes ms importantes de la jerarqua son la estructura de clases y la estructura de objetos. La primera establece todas las relaciones de herencia en sus modalidades permitidas, la segunda, la dinmica de mensajes.

La organizacin de todas las abstracciones logradas en un sistema est en un orden riguroso que categoriza objetos de un mismo o semejante tipo dentro de una misma categora.Jerarqua

Herencia La herencia es el mecanismo que le permite a un objeto heredar propiedades de otra clase de objetos. La herencia permite a un objeto contener sus propios procedimientos o funciones y heredar los mismos de otros objetos.

Es compartir atributos y operaciones entre clases tomando como base una relacin jerrquica. En trminos generales se puede definir una clase que despus se ir refinando sucesivamente para producir subclases. Todas las subclases poseen o heredan todas y cada una de las propiedades de su superclase y aaden, adems, sus propiedades exclusivas. No es necesario repetir las propiedades de las superclases en cada subclase. Polimorfismo Significa que una operacin puede comportarse de modos distintos en distintas clases teniendo el mismo nombre de mtodo.

Sin embargo, en un lenguaje orientado a objetos es este el que selecciona automticamente el mtodo correcto para implementar una operacin basndose en el nombre de la operacin y en la clase del objeto que est siendo afectado. El usuario de una operacin no necesita ser consciente del nmero de mtodos que existen para implementar una cierta operacin polimrfica.

El polimorfismo, entonces, se refiere a que una misma operacin puede tener diferente comportamiento en diferentes objetos.

Clase y ObjetoClase: Una clase contienen el molde (estructura, esquema) a partir del cual se crean los objetos que pertenecen a ella y el cdigo que debe ejecutarse cada vez que un objeto de la clase recibe un mensaje. Una clase contiene la descripcin de las caractersticas comunes de todos los objetos que pertenecen a ella: la especificacin del comportamiento, la definicin de la estructura interna y la implementacin de los mtodos.

Instancia: Se dice que cada objeto es una instancia de su clase. Toda instancia de la clase posee su propio valor para cada uno de los atributos pero comparte los nombres de los atributos y las operaciones con las dems instancias de la clase. Los objetos de un sistema se comunican entre s mediante mensajes. Todo objeto contiene una referencia implcita a su propia clase.Diagrama de clases.

Lenguaje de Modelado Unificado UML

UMLEs un lenguaje que permite modelar, construir y documentar los elementos que forman un producto de software que responde a un enfoque orientado a objetos.Cuenta con una notacin estndar y semnticas esenciales para el modelado de un sistema orientado a objetos.Fusin de las tcnicas Booch, OMT y OOSE de Grady Booch, Jim Rumbaugh e Ivar Jacobson respectivamente en 1995.

Diagramas de estructura: mostrar la estructura esttica del sistema que se est modelandoIncluye: diagramas de clase, componentes y/o objetos.

Diagramas de comportamiento: muestra el comportamiento dinmico entre los objetos y el sistema.Incluye: diagramas de actividades, casos de uso y de secuenciaTipos de Diagramas UMLDiagramas de Clase Describe grficamente las especificaciones de las clases de software y de las interfaces en una aplicacin.

Contiene la siguiente informacin:Clases, asociaciones y atributos.Interfaces, con sus operaciones y constantes.Mtodos.Informacin sobre los tipos de los atributos.Navegabilidad.Dependencias.Atributos Cada atributo tiene un nombre o identificador y un tipo. El nombre del atributo es un sustantivo y empieza en minsculas. Seguidamente aparecer el tipo de atributo ( float, char, int,...). Opcionalmente puede aparecer el valor inicial del atributo y otras propiedades colocadas entre los signos de parntesis.

Un atributo se define de la siguiente forma:

Visibilidad nombre_atributo : tipo_atributo = valor inicial {`otras propiedades }

La visibilidad hace referencia a si el atributo es pblico, protegido o privado. UML emplea los smbolos +, # y para indicar si es pblico, protegido o privado respectivamente.

OperacionesLas especificacin de las operaciones en UML tienen la siguiente sintaxis:

Visibilidad nombre_servicio (lista de parmetros):tipo de retorno {`otras propiedades}`

El nombre del servicio emplear un verbo con un sustantivo. La primera letra se escribir en minscula. Entre parntesis, (), aparecern los parmetros del servicio, siguiendo para cada uno de ellos, la regla sobre los atributos. Despus aparecer el tipo de retorno y opcionalmente otras propiedades entre llaves. El usuario puede crear otros compartimentos para dar informacin adicional como excepciones, requisitos, etc. Representacin de una clase en UML CFichaRevista

- NroDeRevista : int- Ao : int

+ CFichaRevista()+ AsignarNroDeRevista()+ObtenerNroDeRevista()+ AsignarAo()+ ObtenerAo()+ PedirRevista()+ Imprimir()Clase

Atributos

OperacionesAsociaciones Los Objetos a menudo son asociados o relacionados con otros objetos.

Cuando modelas asociaciones en diagramas de clases UML, debe mostrarse como una delgada lnea conectando dos clases. Las Asociaciones pueden llegar a ser bastante complejas; por consiguiente, pueden representar algunas cosas acerca de ellos en los diagramas.

Notacin para las asociaciones

La etiqueta, que es opcional, aunque muy recomendable, es normalmente una o dos palabras que describen la asociacin.

Indicadores de la multiplicidad La multiplicidad de la asociacin est etiquetada en los extremos de la lnea, una multiplicidad de indicador para cada direccin

Indicadores de la multiplicidad. Indicador Significado 0..1Cero o uno 1Uno slo 0..*Cero o ms 1..*Uno o ms N Slo n (donde n > 1) 0..n Cero a n (donde n > 1) lenStr2 Uno a n (donde n > 1)

AsociacionesPara indicar la direccin en la que debe leerse la etiqueta. Esto se representa mediante un tringulo relleno, llamado un indicador de direccin.

Las puntas de flecha en el extremo de la lnea indican la direccionalidad de la asociacin. Una lnea con una punta de flecha es unidireccional, mientras que una lnea con cero o dos puntas de flecha es bidireccional. Oficialmente debe incluir ambas puntas de flecha para asociaciones bidireccional.

En cada extremo de la asociacin, el rol, el contexto que toma un objeto dentro de la asociacin, tambin puede estar indicado. Modelar el rol slo cuando la informacin agrega valor.Asociacin bsica entre ClasesDefine una determinada vinculacin entre dos tipos. El conector puede indicar el rol de la asociacin fuente y destino, la cardinalidad y el tipo de navegabilidad (bidireccional o unidireccional).si un objeto de la clase P tiene que saber algo de un objeto de la clase Q aparece la asociacin, esto es, se establece la relacin necesito-conocer.

ClassPClassQ0..* +habilita+es habilitado por 1GeneralizacinEl elemento destino es una especializacin del elemento fuente.La generalizacin se representa por una lnea continua con una flecha hueca que apunta a la superclase.

GeneralizacinEs una forma de construir clasificaciones taxonmicas entre los conceptos que son representados en una jerarqua de clases. Para la realizacin de estas generalizaciones deben de cumplir dos reglas:Regla del 100%: La definicin de la superclase se debe poder aplicar a la subclase. La subclase debe ajustarse al 100% de los atributos y asociaciones de la superclase. Regla Es-Un: En el lenguaje natural debe comprobarse que la subclase Es Un tipo de la superclase (p.ej: PagoACrdito es un tipo de Pago).AgregacinEl elemento destino forma parte del elemento fuente. Dicha relacin puede romperse sin restricciones. Es un tipo de asociacin del todo con las partes. Se representa con una lnea continua, con un diamante en la clase que representa el todo y una flecha en la parte.

ComposicinEl elemento destino forma parte del elemento fuente. Dicha relacin slo puede romperse cumpliendo unas restricciones determinadas.En una composicin, los objetos componentes no tienen vida propia, esto es, que cuando se destruye el objeto compuesto tambin se destruyen las partes. Esta particularidad no se cumple necesariamente en la agregacin. Adems, un objeto componente slo puede formar parte de un objeto compuesto y no puede pasar de un objeto compuesto a otro. En UML, una agregacin por valor o composicin las partes son atributos del todo quedndose representado con el diamante relleno.

Dependencia

La clase A depende de la clase B y puede verse afectada si se producen cambios en la clase B. Una relacin de dependencia muestra, por ejemplo, que una clase hace referencia a otra clase. Cuando hay dependencia entre dos clases, no se aaden atributos de instancia a la otra clase; lo cual es una diferencia respecto a la asociacin. Cuando no hay una relacin de asociacin o de generalizacin se utiliza normalmente la dependencia para el resto de relaciones. Las dependencias se suelen emplear con los paquetes. En UML se representan mediante una lnea a trazos acabada en flecha abierta. Una dependencia es una relacin de uso en la que un cambio en uno de los trminos -por ejemplo, una clase puede afectar a otro (otra clase)RealizacinLa relacin de realizacin conecta un elemento del modelo, tal como una clase, con otro elemento, como un interfaz, especificando su comportamiento pero no su estructura o implementacin.La realizacin se indica con una flecha de lnea discontinua con una punta de flecha hueca cerrada. Es similar al smbolo de generalizacin con una lnea discontinua, para indicar que es similar a un tipo de herencia con relacin de dependencia.

ComentarioUn comentario es una anotacin asociada a un elemento, carece de significado directo, pero muestra una informacin significativa para el que ha realizado el modelado. En UML, el comentario se pone dentro de un rectngulo con un vrtice doblado, enlazado con una lnea discontinua al cual se refiere.

EstereotipoEn el apartado del nombre de la clase, en la parte superior, se puede indicar un estereotipo, tales como , , , etc.Pasos para el diagrama de clasesIdentificar las clases.Mostrar los atributos y operacionesDibujar asociacionesEtiquetar asociaciones y en caso necesario los rolesIndicar multiplicidadDibujar fechas de direccinEjemplo Agenda Telefonica

Ejemplo de Sistema de Laboratorio Clnico

Ejemplo de Sistema de Bienes Raices

Ejemplo. Persona