Fundamentos de C#

30
Ignacio García, Ismael Caballero {Ignacio.GRodriguez, Ismael.Caballero}@uclm.es Universidad de Castilla La Mancha Sesión 1. Fundamentos de C# Versión 1.0 Curso de Enseñanzas Propias “Lenguaje de Programación C#” Curso 2008/09

description

Curso de Enseñanzas Propias “Lenguaje de Programación C#”Curso 2008/09

Transcript of Fundamentos de C#

Page 1: Fundamentos de C#

Ignacio García, Ismael Caballero

{Ignacio.GRodriguez, Ismael.Caballero}@uclm.es

Universidad de Castilla La Mancha

Sesión 1.

Fundamentos de C# Versión 1.0

Curso de Enseñanzas Propias “Lenguaje de Programación C#”

Curso 2008/09

Page 2: Fundamentos de C#

2CEP "Lenguaje de Programación C#"- Curso 08/09

Sesión 1

Agenda de la Sesión

11:30-14:00S.1.4. POO en C#

11:00 -11:30CAFÉ

09:00-11:00S.1.1. Introducción a Plataforma .NET

S.1.2. Introducción a Visual Studio 2005S.1.3. Introducción a C#

DuraciónObjetivo

Page 3: Fundamentos de C#

Ignacio García, Ismael Caballero

{Ignacio.GRodriguez, Ismael.Caballero}@uclm.es

Universidad de Castilla La Mancha

Sesión 1.1.

Introducción a la Plataforma .NET Versión 1.0

[Material adaptado del Confeccionado por Francisco Ruiz y Manuel Serrano para el CEP VB.NET]

Curso de Enseñanzas Propias “Lenguaje de Programación C#”

Curso 2008/09

Page 4: Fundamentos de C#

4CEP "Lenguaje de Programación C#"- Curso 08/09

1. La Plataforma .NET2. .NET Framework3. Entorno de Ejecución Común 4. Biblioteca de Clases Común 5. Especificación del Lenguaje Común

Sesión 1.1.

Contenidos

Page 5: Fundamentos de C#

5CEP "Lenguaje de Programación C#"- Curso 08/09

• ¿Qué es .NET?� Una arquitectura tecnológica para la creación y

distribución de software como servicio .• Servicio en cualquier plataforma, cliente en cualquier

dispositivo, programación en cualquier lenguaje, integración basada en estándares.

• ¿Qué incluye?� .NET Framework, infraestructura para la creación y

ejecución de las aplicaciones.� Visual Studio .NET, entorno de desarrollo integrado (IDE).� Otros servicios.

1. Plataforma .NET

Definición de la Plataforma .NET

Page 6: Fundamentos de C#

6CEP "Lenguaje de Programación C#"- Curso 08/09

20002000InternetInternet33rdrd GenGen

.NET.NET

19961996InternetInternet11stst GenGen

IE/IISIE/IIS

19971997InternetInternet22ndnd GenGen

DNA/COM+DNA/COM+19921992Cliente/ServidorCliente/Servidor

Win32Win32

��Nueva Nueva maneramanera de de desarrollardesarrollar softwaresoftware

1. Plataforma .NET

Objetivo Fundamentales

Page 7: Fundamentos de C#

7CEP "Lenguaje de Programación C#"- Curso 08/09

• Soporte multi-lenguaje� La plataforma .NET es independiente del lenguaje

• Todos los lenguajes .NET son considerados por igual

• Un Runtime único

=> mejor aprovechamiento de los conocimientos existentes

� Es posible integrar otros lenguajes y crear otros compiladores• Common Language Specification (CLS)

� Lenguajes disponibles:• Por Microsoft: Visual Basic, C++, C#, J#• Por terceros: APL, COBOL, Pascal, Eiffel, Haskell, ML, Oberon, Perl,

Python, Scheme, Smalltalk, Fortran, …

1. Plataforma .NET

Objetivo Fundamentales (II)

Page 8: Fundamentos de C#

8CEP "Lenguaje de Programación C#"- Curso 08/09

Soportemulti-lenguaje

1. Plataforma .NET

Objetivo Fundamentales (III)

Page 9: Fundamentos de C#

9CEP "Lenguaje de Programación C#"- Curso 08/09

Soporte multi-plataforma� Proyecto Rotor

• Common Language Infraestructure (CLI)• Código fuente abierto, no comercial, modificable• Compilar/ejecutar en FreeBSD, Windows, Mac OS X

– http://msdn.microsoft.com/net/sscli

� Proyecto Mono• Implementación Open Source del .NET Framework• Compilador de C#, VB.NET, CLR, librería de clases, etc.• Linux, S390, SPARC, HPPA• Implementa ADO.NET, ASP.NET, etc.

– www.go-mono.com

1. Plataforma .NET

Objetivo Fundamentales (IV)

Page 10: Fundamentos de C#

10CEP "Lenguaje de Programación C#"- Curso 08/09

• Basado en estándares� XML (XML Schemas, Xpath, XSLT)� Servicios Web

• SOAP (Simple Object Access Protocol)• UDDI (Universal Description, Discovery & Integration)• WSDL (Web Service Description Language)

� Lenguaje intermedio común CIL� Lenguaje de programación C#

1. Plataforma .NET

Objetivo Fundamentales (V)

Page 11: Fundamentos de C#

11CEP "Lenguaje de Programación C#"- Curso 08/09

• Facilitar la integración del software permitiendo� Diversas plataformas (Windows, UNIX, Mainframe)� Diferentes middleware de componentes (DDE, COM, CORBA)

� Diferentes sistemas operativos• Homogeneizar lenguajes mediante

� Sistema de Tipos Común� Biblioteca de Clases base comunes

• Redefinir soluciones preexistentes como servicios• Simplificar la forma de programar mediante

� Orientación a objetos plena: clases, interfaces, constructores, atributos, métodos, herencia inter-lenguajes, …

� Herramientas y entorno comunes para todos los desarrollos.� Interoperabilidad pre-construida (con COM, DLL’s, etc.)� Un Framework que libera al programador de muchas tareas: memoria,

seguridad, etc.

1. Plataforma .NET

Estrategias de Desarrollo

Page 12: Fundamentos de C#

12CEP "Lenguaje de Programación C#"- Curso 08/09

� Paradigma de desarrollo unificado

Windows APIWindows API

.NET Framework.NET Framework

API API consistenteconsistente independienteindependiente deldellenguajelenguaje y el y el modelomodelo de de programaciprogramaci óónn

ASPASP

Web,Web,EstEst áándarndar ,,En HTMLEn HTML

MFC/ATLMFC/ATL

OOP,OOP,PotenciaPotencia ,,

ExpresividadExpresividad

VB FormsVB Forms

RAD,RAD,ComposiciComposici óónn,,

DelegaciDelegaci óónn

1. Plataforma .NET

Estrategias de Desarrollo (II)

Page 13: Fundamentos de C#

13CEP "Lenguaje de Programación C#"- Curso 08/09

• Instalación de impacto cero� Aplicaciones y componentes compartidos o privados

• Ejecución “side-by-side”� Coexistencia de varias versiones del mismo componente

• Ensamblados (Assemblies)� Colección de funcionalidad creada, versionada e implantada como una unidad de

implementación única (incluyendo uno o varios archivos)� Son autodescriptivos� En tiempo de ejecución se resuelven las referencias entre componentes, se

garantiza la política de enlace de versiones y se valida la integridad de los ensamblados cargados.

� El Manifiesto (Manifest) contiene los metadatos del ensamblado incluyendo• la identidad del ensamblado• los archivos que implementan el ensamblado• las dependencias en tiempo de compilación con otros ensamblados• los tipos y recursos que forman el ensamblado• el conjunto de permisos para ejecutarse apropiadamente

1. Plataforma .NET

Estrategias de Implantación

Page 14: Fundamentos de C#

14CEP "Lenguaje de Programación C#"- Curso 08/09

• Ventajas de los Ensamblados:� No son necesarios más archivos para usar el componente� No más archivos de cabeceras, IDL, librerías de tipos, ...

� Se reduce la dependencia del Registro

� No más “infierno de las DLLs”: se evitan las faltas de sincronismo entre una librería compartida respecto de la aplicación que la invoca

� Sistema de nombres robusto� Auto-reparación de aplicaciones

1. Plataforma .NET

Estrategias de Implantación (II)

Page 15: Fundamentos de C#

15CEP "Lenguaje de Programación C#"- Curso 08/09

1. La Plataforma .NET2. .NET Framework3. Entorno de Ejecución Común 4. Biblioteca de Clases Común 5. Especificación del Lenguaje Común

Sesión 1.1.

Contenidos

Page 16: Fundamentos de C#

16CEP "Lenguaje de Programación C#"- Curso 08/09

• De cara al programador, el .NET framework es la pieza base de .NET, ya que proporciona las herramientas y servicios para desarrollar el software:� Entorno de Ejecución Común (CLR)� Biblioteca de clases básicas� Motor de generación de interfaces de usuario

• Web (ASP .NET)• Tradicionales Windows (Windows Forms)

� Especificación de Lenguaje Común (CLS)

2. .NET Framework

Características

Page 17: Fundamentos de C#

17CEP "Lenguaje de Programación C#"- Curso 08/09

Windows COM+ Services

Common Language Runtime

Base Class Library

ADO.NET and XML

ASP.NET Windows Forms

Common Language Specification

VB C++ C# J# Cobol…V

isual Studio.N

ET

2. .NET Framework

Elementos

Page 18: Fundamentos de C#

18CEP "Lenguaje de Programación C#"- Curso 08/09

1. La Plataforma .NET2. .NET Framework3. Entorno de Ejecución Común4. Biblioteca de Clases Común 5. Especificación del Lenguaje Común

Sesión 1.1.

Contenidos

Page 19: Fundamentos de C#

19CEP "Lenguaje de Programación C#"- Curso 08/09

• Es un motor encargado de la gestión del código de las aplicaciones en cuanto a su� Carga� Ejecución� Manipulación de memoria� Seguridad� Etc.

• Servicios que proporciona:� En tiempo de ejecución

– Gestión de memoria (incluida recolección de basura), gestión de procesos, threads (hilos), garantizar seguridad, satisfacer dependencias sobre otros componentes.

� En tiempo de desarrollo– Gestión del tiempo de vida, nominación de tipos robusta, tratamiento de

excepciones multilenguaje, gestión de eventos basada en delegados, enlace dinámico, ..

3. Entorno de Ejecución Común

Common Language Runtime-CLR

Page 20: Fundamentos de C#

20CEP "Lenguaje de Programación C#"- Curso 08/09

Carga de clases y disposición en memoria

LenguajeIntermedio (IL)

Gestorde código

Recolectorde basura

Motor Seguridad Motor Depuración

Control Tipos Gestor Excepciones

Soporte Threads Componentes

Sistema de Tipos Común (CTS)

3. Entorno de Ejecución Común

Common Language Runtime-CLR (II)

Page 21: Fundamentos de C#

21CEP "Lenguaje de Programación C#"- Curso 08/09

VBVB VCVC ...... ScriptScript

ILILCCóódigodigoNativoNativo

““EconoEcono””--JITJITCompiladorCompilador

Standard JITStandard JITCompiladorCompilador

CCóódigodigo NativoNativo

CCóódigodigogeneradogeneradoinstalaciinstalacióónn

Common Language RuntimeCommon Language Runtime

3. Entorno de Ejecución Común

Lenguaje Intermedio IL

Page 22: Fundamentos de C#

22CEP "Lenguaje de Programación C#"- Curso 08/09

CCóódigodigoFuenteFuente

CompilaciCompilaci óónn

Al Al instalarinstalar o lao laprimeraprimera vezvez queque cadacada

mméétodotodo eses llamadollamado

CompiladorCompiladorLenguajeLenguaje

EnsambladoEnsamblado

EjecuciEjecuci óónn

CompiladorCompiladorJITJIT

CCóódigodigonativonativo

CCCCCCCCóóóóóóóódigodigodigodigodigodigodigodigo ILILILILILILILIL

MetadatosMetadatosMetadatosMetadatosMetadatosMetadatosMetadatosMetadatos

3. Entorno de Ejecución Común

Compilación y Ejecución

Page 23: Fundamentos de C#

23CEP "Lenguaje de Programación C#"- Curso 08/09

• Common Type System� Conjunto estándar de tipos y reglas para crear nuevos tipos� Integración multi-lenguaje:

– Heredar implementaciones de clases escritas en otros lenguajes– Invocar excepciones de código entre lenguajes– Depurar transparentemente

� ¡No más versiones de librerías para cada lenguaje o compilador!� ¡No más librerías de clases limitadas a un lenguaje concreto!� Todas las implementaciones de clases, interfaces, estructuras, etc.,

nativas o creadas por el programador, son tipos .NET.� Todos los tipos .NET son objetos.

Dim sNombre As String

sNombre = "coche"

MessageBox.Show(sNombre.Length) ' devuelve 5

3. Entorno de Ejecución Común

Sistemas de Tipos Común - CTS

Page 24: Fundamentos de C#

24CEP "Lenguaje de Programación C#"- Curso 08/09

Categorías de tipos

3. Entorno de Ejecución Común

Sistemas de Tipos Común – CTS (II)

Page 25: Fundamentos de C#

25CEP "Lenguaje de Programación C#"- Curso 08/09

3. Entorno de Ejecución Común

Sistemas de Tipos Común – CTS (III)

Page 26: Fundamentos de C#

26CEP "Lenguaje de Programación C#"- Curso 08/09

1. La Plataforma .NET2. .NET Framework3. Entorno de Ejecución Común 4. Biblioteca de Clases Común 5. Especificación del Lenguaje Común

Sesión 1.1.

Contenidos

Page 27: Fundamentos de C#

27CEP "Lenguaje de Programación C#"- Curso 08/09

Windows COM+ Services

Common Language Runtime

Base Class Library

ADO.NET and XML

ASP.NET Windows Forms

Common Language Specification

VB C++ C# J# Cobol…

System

System.Data System.Xml

System.Web

GlobalizationDiagnosticsConfigurationCollections

ResourcesReflectionNetIO

ThreadingTextServiceProcessSecurity

DesignADO

SQLTypesSQL

XPathXSLT

RuntimeInteropServicesRemotingSerialization

Serialization

Configuration SessionStateCaching Security

ServicesDescriptionDiscoveryProtocols

UIHtmlControlsWebControls

System.Drawing

ImagingDrawing2D

TextPrinting

System.WinFormsDesign ComponentModel

4. Biblioteca de Clases Común

Distintos APIs

Page 28: Fundamentos de C#

28CEP "Lenguaje de Programación C#"- Curso 08/09

• Lo que ve el desarrollador� Un API formada por un conjunto de bibliotecas de clases

comunes, orientadas a objetos, jerárquicas y extensibles que• proveen soporte completo para la programación de diversos tipos de

aplicaciones• permiten herencia entre lenguajes, gestión de errores y depuración

� Las clases están organizadas de forma lógica y jerárquica en “namespaces”

• System, XML, Data (ADO .NET), Drawing, WinForms, Web (ASP.NET)

• Facilita reutilización• Evita colisiones

� No es necesario aprender múltiples modelos de objetos:• Visual C: MFC, Visual J++: WFC, Visual Basic: Fw

4. Biblioteca de Clases Común

Distintos APIs (II)

Page 29: Fundamentos de C#

29CEP "Lenguaje de Programación C#"- Curso 08/09

1. La Plataforma .NET2. .NET Framework3. Entorno de Ejecución Común 4. Biblioteca de Clases Común 5. Especificación del Lenguaje Común

Sesión 1.1.

Contenidos

Page 30: Fundamentos de C#

30CEP "Lenguaje de Programación C#"- Curso 08/09

Windows COM+ Services

Common Language Runtime

Base Class Library

ADO.NET and XML

ASP.NET Windows Forms

Common Language Specification

VB C++ C# J# Cobol…

•• Conjunto de caracterConjunto de caracteríísticas comunes que sticas comunes que deben cumplir todos los lenguajes.deben cumplir todos los lenguajes.

•• Su finalidad esSu finalidad es•• Independencia del lenguajeIndependencia del lenguaje

•• IntegraciIntegracióón entre lenguajesn entre lenguajes

•• Apertura a nuevos lenguajesApertura a nuevos lenguajes

5. Especificación del Lenguaje Común

Common Language Specification (CLS)