Académique Documents
Professionnel Documents
Culture Documents
Aluxes .NET
Temas a Tratar
Introducción a la Orientación a Objetos
Introducción a .NET
El lenguaje de programacion C#
Programacion en C#
Temas a Tratar
Introducción a la Orientación a Objetos
Introducción a .NET
El lenguaje de programacion C#
Programacion en C#
Temas a Tratar
Introducción a la Orientación a Objetos
Paradigmas de Programación
Clases y Objetos
Modificadores de Acceso
Principios de la Orientación a Objetos
Conceptos del Diseño Orientado a Objetos
Introducción a .NET
El lenguaje de programacion C#
Programacion en C#
Paradigmas de Programación
Hay para todos los gustos
Estructurados (C, Pascal, Basic, etc.)
Funcionales (CAML)
Declarativos (Prolog)
Orientados a Objetos (C#, VB.NET, Smalltalk, Java)
Orientados a Aspectos
Híbridos (Lisp, Visual Basic)
Incomprensibles....
Cada enfoque tiene sus ventajas y desventajas
Cada uno es más apropiado para ciertas cosas
El mundo color de Objetos
Todo el mundo está compuesto de
entidades que se relacionan e interactúan
entre si
¿Qué es un Objeto?
Todo es un Objeto ¡¿~?!
Abstracción Relaciones
Herencia Encapsulamiento
Abstracción
Ignorancia Selectiva
La abstracción nos ayuda a trabajar con cosas
complejas
Se enfoca en lo importante
Ignora lo que no es importante (simplifica)
Una clase es una abstracción en la que:
Se enfatizan las características relevantes
Se suprimen otras características
Una clase debe capturar una y solo una
abstracción clave
Encapsulamiento
Principio que establece que los atributos
propios de un objeto no deben ser visibles
desde otros objetos
Deben ser declarados como privados
Permite abstraer al resto del mundo de la
complejidad de la implementación interna
Permite exponer el estado del objeto sólo a
través del comportamiento que le hayamos
definido mediante miembros públicos
¿Por qué es útil?
Punto de Control/Validación
Mejor respuesta ante los Cambios
Relaciones
Todo sistema abarca muchas clases y
objetos
Los objetos contribuyen en el
comportamiento de un sistema
colaborando entre si
La colaboración se logra a través de las
relaciones
Existen dos tipos principales de relaciones
Asociación
Agregación
Relaciones de Asociación
Una asociación es una conexión entre dos clases
que representa una comunicación
Una asociación puede tener nombre
La comunicación puede ser tanto uni como bi-
direccional (por defecto)
La multiplicidad es el número de instancias que
participan en una asociación
Ejemplo:
Una Persona es Dueña de un Vehículo
Un Vehículo Pertenece a una Persona
Persona -dueño Vehiculo
Relaciones de Agregación
La agregación es una forma especial de
asociación donde un todo se relaciona con sus
partes
También se conoce como “una parte de” o una relación
de contención
Ejemplo:
Una Puerta es una parte de un Vehículo
El Vehículo es azul, la Puerta es Azul
Mover el Vehículo implica mover la Puerta
Vehiculo Puerta
-color
+Mover()
Herencia
Clase Base
Es una relación entre clases
en la cual una clase
comparte la estructura y Transporte
-pasajeros
comportamiento definido en +Avanzar()
otra clase (Grady Booch) +Detenerse()
Avanzar
Frenar
Transporte
Transporte
Avanzar
Avanzar
Frenar
Frenar
Transporte
Avanzar
Frenar
Temas a Tratar
Introducción a la Orientación a Objetos
Introducción a .NET
¿Qué es el .NET?
¿Qué es el .NET Framework?
Funcionamiento
El lenguaje de programacion C#
Programacion en C#
¿Qué es el .NET?
Otros Otros
servicios servicios
Servicios Formularios
Web
Biz Web
Tier Logic
Navegadores
estándares
Lógica aplicación
Clientes OS
inteligentes
Services
Servicios SO
Servicios
building blocks
Dispositivos
móviles
Visual Studio.NET
ASP.NET: Servicios Web Windows
y Web Forms Forms
Código
CLR
Compilador
Nativo JIT En instalación o la
primera vez que se
Ejecución llama a un método
Cabe destacar que el compilador JIT (Just In Time) traduce el código MSIL a código
nativo no de manera monolítica, sino por métodos, módulos y componentes. Por lo
tanto, a grandes rasgos: código que no sea ejecutado no será compilado. El
código MSIL generado a partir de la compilación de código C# es idéntico al
código MSIL generado a partir de cualquier otro lenguaje CLS. Esto podría abrir
el interrogante de ¿por qué programar en C# en lugar de hacerlo en VB.NET o
en Managed C++ o, incluso, en Delphi .NET? Esta pregunta podría responderse
con otra: ¿por qué programar en C++ en lugar de hacerlo en C o Pascal, o en
cualquier otro lenguaje compilado, si todos generan el mismo código Intel x86?
Cada lenguaje posee sus características que lo tornan ideal para ciertos usos;
además, presenta diversos grados de expresividad que pueden permitir
implementar el mismo algoritmo de maneras diversas, por lo que un modo puede
resultar más eficiente que otro.
Temas a Tratar
Introducción a la Orientación a Objetos
Introducción a .NET
El lenguaje de programacion C#
Programacion en C#
Temas a Tratar
Introducción a la Orientación a Objetos
Introducción a .NET
El lenguaje de programacion C#
C#.NET
C#.NET y VB
Sintaxis (Diferencias)
Programación en C#
C#.NET
C# es un lenguaje de programación moderno,
completamente orientado a objetos y se podría decir que es
tanto una evolución de los lenguajes C++ y Java, ya que
incorpora las mejoras características de cada uno de ellos.
C# es un lenguaje muy estricto en su sintaxis ya que obliga a
que se declaren todas las variables, las conversiones de
datos deber ser explícitas, es sensible a mayúsculas y otras
características que lo convierte en un lenguaje muy formal.
Aunque esta formalidad puede ser una dificultad al
comienzo a la larga ayuda al desarrollador a su formación ya
que le proporciona mayor disciplina.
Aunque es posible escribir código para la plataforma .NET en
muchos otros lenguajes, C# es el único que ha sido diseñado
específicamente para ser utilizado en ella, por lo que
programarla usando C# es mucho más sencillo e intuitivo
que hacerlo con cualquiera de los otros lenguajes ya que C#
carece de elementos heredados innecesarios en .NET. Por
esta razón, se suele decir que C# es el lenguaje nativo de
.NET
C#.NET
C# irrumpe en el mercado como un lenguaje muy bien diseñado y con muchas
virtudes en una industria plagada de soluciones y herramientas de
programación para todos los gustos…
¿Cuáles son, entonces, los motivos por los cuales deberíamos optar por C#?
/// <summary>
/// Documentación XML que puede ser consumida por otras
/// herramientas para mostrar ayuda dinámica o generar
/// documentación en varios formatos
/// </summary>
public class Matematica {
/// <summary>
/// Calcula la suma de dos números enteros
/// </summary>
/// <param name="x">El primer operando de la suma</param>
/// <param name="y">El segundo operando de la suma</param>
/// <returns> La suma entera de ambos operandos</returns>
public int Sumar (int x, int y) {return x + y;}
}
Comentarios
VB
'Comentario simple
Dim nombre As String = “Juan” ‘Otro comentario
Case Sensitivity
C# distingue entre mayúsuclas y minúsculas
system.console.writeline(“HOLA”); INCORRECTO
System.Console.WriteLine(“HOLA”); CORRECTO
C# VB
public Public
private Private
internal Friend
protected Protected
protected internal Protected Friend
Declaración de Variables
C#: el tipo de dato precede al identificador (nombre)
int x;
decimal y;
rectangle z;
Cliente cli;
VB:
VB
try
{
int resultado = x/y;
Try
}
Dim resultado As Integer
catch(DivideByZeroException e)
resultado = x/y
{
Catch e As DivideByZeroException
//Error division por cero
‘Error division por cero
}
Catch
catch
‘Otro error
{
Finally
//Otro error
‘Siempre pasa por aca
}
End Try
finally
{
//Siempre pasa por aca
}
Namespaces
C#
namespace BancoARG
{
namespace Gestion
{
public class CtaCte
{
}
public class CajaAhorro
{
}
}
}
//Referencia “full”
BancoARG.Gestion.CtaCte;
BancoARG.Gestion.CajaAhorro;
//Referencia “corta”
using BancoARG.Gestion;
CtaCte cc = new CtaCte();
CajaAhorro ca = new CajaAhorro();
Namespaces de la plataforma
.NET
System: Contiene tipos de datos muy usados, datos basicos, tablas,
excepciones, ..... Es el raiz
System.Object: Soporta toda la jerarquia de las clases .NET
System.Collection: Colecciones de datos de uso comun, como pilas,
colas, listas, ...
System.Data: Manipulacion de bases de datos. Forma la denominada
arquitectura ADO.NET
Aluxes .NET