SlideShare a Scribd company logo
1 of 43
C SHARP
CLASES Y OBJETOS
CLASES Y OBJETOS EN C#
1. MÓDULOS: CLASES, ESTRUCTURAS,
ESPACIOS DE NOMBRES,
ENSAMBLADOS
2. TIPOS DE LENGUAJE
3. DEFINICIÓN Y SEMÁNTICA DE LOS
OPERADORES
4. MÉTODOS Y MENSAJES. PASO DE
PARÁMETROS
5. CONSTRUCCIÓN DE OBJETOS
NIVELES DE ACCESO DE LAS CLASES
• PUBLIC: PERMITE ACCEDER A LAS
PARTES DE UNA CLASE DESDE FUERA
DE LA CLASE
• PRIVATE: SOLO LAS PARTES INTERNAS
DE LA CLASE PUEDEN ACCEDER A
DICHO ELEMENTO
• PROTECTED: CUANDO LA CLASE ES
HEREDADA ESTOS ELEMENTOS
PUEDEN SER ACCEDIDOS JUNTO CON
LOS PÚBLICOS
PUBLIC CLASS PERSONA
{
PUBLIC STRING PRIMERNOMBRE;
PUBLIC STRING
SEGUNDONOMBRE;
PRIVATE INT EDAD;
PROTECTED BOOLEAN
TIENEEMPLEO;
}
NIVELES DE ACCESO DE LAS CLASES
• INTERNAL: VISIBILIDAD PARA EL
ENSAMBLADO
• PROTECTED INTERNAL: VISIBILIDAD
PARA LA CLASE Y SUBTIPOS DENTRO
DEL MISMO ENSAMBLADO
ENCAPSULACIÓN DE LAS CLASES
• LA ENCAPSULACIÓN DE UNA CLASE
PERMITE SOLUCIONAR EL PROBLEMA
EN FORMA DE UNA CAJA NEGRA.
• NO NOS INTERESA COMO SE
REALIZAN LOS CÁLCULOS PERO SI LA
RESPUESTA FINAL
• MSDN: LA ENCAPSULACIÓN SIGNIFICA
QUE UN GRUPO DE PROPIEDADES,
MÉTODOS Y OTROS MIEMBROS
RELACIONADOS SE TRATAN COMO SI
FUESE UNA SOLA UNIDAD
ELEMENTOS DE UNA CLASE
• VARIABLES,
PROPIEDADES O
CAMPOS
• MÉTODOS O
FUNCIONES
• CONSTRUCTORES
• DESTRUCTORES
• EVENTOS
• CLASES ANIDADAS
PUBLIC CLASS PERSONA
{
PUBLIC PERSONA() //CONSTRUCTOR
{
PRIMERNOMBRE = “NO ASIGNADO”;
SEGUNDONOMBRE = “NO ASIGNADO”;
}
PUBLIC STRING PRIMERNOMBRE;//VARAIBLE
PUBLIC STRING SEGUNDONOMBRE;//VARAIBLE
PUBLIC STRING OBTENERNOMBRE() //METODO
{
RETURN PRIMERNOMBRE + “ ” +
SEGUNDONOMBRE;
}
}
¿QUÉ ES UNA CLASE?[LINK]
• ES UN NUEVO TIPO DE
VARIABLE QUE TIENE
PROPIEDADES Y
CARACTERÍSTICAS PROPIAS Y
ASOCIADAS ENTRE SÍ,
DISEÑADAS CADA UNA DE
ELLAS PARA ALMACENAR
CIERTO TIPO DE
INFORMACIÓN Y SOLUCIONAR
UN PROBLEMA ESPECIFICO
SIENDO ESTA (LA CLASE)
PARTE DE UN SISTEMA MAYOR
O MAS GRANDE
PUBLIC CLASS CLIENTE
{
//TIPOS, METODOS Y EVENTOS VAN
AQUI...
}
EJEMPLO
• CREEMOS UN SISTEMA DE
CLASES QUE SOLUCIONE UN
PROBLEMA PARA ENTENDER
MEJOR COMO FUNCIONA ESTO.
• SISTEMA DE CLASIFICACIÓN DE
PERSONAL (SCP). REALIZAR
CLASES QUE PERMITA
RECONOCER A UNA PERSONA
POR LAS DIFERENTES
CARACTERÍSTICAS QUE ESTA
POSEA EN SU VIDA. SALUD,
FÍSICO, MENTAL
• PARA DESARROLLAR EL EJEMPLO
PODEMOS HACERNOS LAS SIGUIENTES
PREGUNTAS
• ¿QUÉ VARIABLES SON NECESARIAS
PARA CADA CASO?
• ¿QUÉ FUNCIONES SON NECESARIAS
PARA MANTENER DICHA
INFORMACIÓN?
• ¿CUÁLES SON LOS CÁLCULOS A
REALIZAR EN CADA CASO?
CLASES Y OBJETOS EN C#
• CLASES
• PROPIEDADES
• VISIBILIDAD
• ESPACIOS DE NOMBRES
• ENSAMBLADOS
• TIPOS DEL LENGUAJE
• CONSTRUCCIÓN DE OBJETOS
• ESTRUCTURAS
• ASIGNACIÓN Y COPIA
• IDENTIDAD E IGUALDAD
• MÉTODOS Y MENSAJES
• PASO DE PARÁMETROS
• OPERADORES
• INSTANCIA ACTUAL
• MÉTODO MAIN
CLASES Y OBJETOS [LINK]
• CREAR OBJETOS
• AUNQUE SE UTILIZAN A VECES
DE FORMA INTERCAMBIABLE,
UNA CLASE Y UN OBJETO SON
COSAS DIFERENTES.
• UN OBJETO ES UNA ENTIDAD
CONCRETA BASADA EN UNA
CLASE Y, A VECES, SE
DENOMINA INSTANCIA DE UNA
CLASE
• UNA CLASE DEFINE UN TIPO DE
OBJETO, PERO NO ES
PROPIAMENTE UN OBJETO
CLASES Y OBJETOS
• LOS OBJETOS SE PUEDEN CREAR CON LA
PALABRA CLAVE NEW SEGUIDA DEL
NOMBRE DE LA CLASE EN LA QUE SE
BASARÁ EL OBJETO
CLIENTE OBJETO1 = NEW CLIENTE(); //NUEVO OBJETO
CLIENTE OBJETO2; //UNA REFERENCIA A OBJETO SIN CREAR EL OBJETO
CLIENTE OBJETO3 = OBJETO1; //CREA UNA REFERENCIA ENTRE AMBOS
OBJETOS
CLASES
• EN C# LOS ELEMENTOS QUE
CONTIENE UNA CLASE SON:
• ATRIBUTOS
• MÉTODOS
• CONSTRUCTORES
• LA DECLARACIÓN DE UNA CLASE
• INCLUYE LA DEFINICIÓN E
IMPLEMENTACIÓN
• UN FICHERO DE CÓDIGO FUENTE
(EXTENSIÓN .CS) PUEDE CONTENER LA
DECLARACIÓN DE VARIAS CLASES
PUBLIC CLASS PERSONA
{
PUBLIC PERSONA()
{
NOMBRE = "NO ASIGNADO";
}
PUBLIC STRING NOMBRE;
PUBLIC VOID ASIGNANOMBRE ()
{
NOMBRE = “RAFAEL”;
}
}
CLASES
• C# AÑADE 2 NUEVOS TIPOS DE
DECLARACIONES
• PROPIEDADES
• REPRESENTAN CARACTERÍSTICAS DE
LOS OBJETOS QUE SON ACCEDIDAS
COMO SI FUERAN ATRIBUTOS
• OCULTAN EL USO DE GET/SET
• UNA PROPIEDAD PUEDE REPRESENTAR
UN ATRIBUTO CALCULADO
• EVENTOS
• NOTIFICACIONES QUE ENVÍA UN
OBJETO A OTROS OBJETOS CUANDO
SE PRODUCE UN CAMBIO DE ESTADO
SIGNIFICATIVO
• PROPIEDADES Y EVENTOS SON
EL SOPORTE PARA EL
DESARROLLO DE SOFTWARE
BASADO EN COMPONENTES
CLASE CUENTA (1/4)
PUBLIC CLASS CUENTA {
// CONSTANTE
PRIVATE CONST INT MAX_OPERACIONES = 20;
// ATRIBUTO DE CLASE
PRIVATE STATIC INT ULTIMOCODIGO = 0;
// ATRIBUTOS DE INSTANCIA
PRIVATE INT CODIGO;
PRIVATE DOUBLE SALDO = 100;
PRIVATE READONLY PERSONA TITULAR;
PRIVATE ESTADOCUENTA ESTADO;
PRIVATE DOUBLE[] ULTIMASOPERACIONES;
CLASE CUENTA (2/4)
// CONSTRUCTOR
PUBLIC CUENTA(PERSONA TITULAR, DOUBLE SALDO)
{
THIS.CODIGO = ++ULTIMOCODIGO;
THIS.TITULAR = TITULAR;
THIS.SALDO = SALDO;
ESTADO = ESTADOCUENTA.OPERATIVA;
ULTIMASOPERACIONES = NEW DOUBLE[MAX_OPERACIONES];
}
CLASE CUENTA (3/4)
// PROPIEDADES
PUBLIC DOUBLE SALDO
{
GET { RETURN SALDO; }
}
PUBLIC PERSONA TITULAR
{
GET { RETURN TITULAR; }
}
PUBLIC INT CODIGO
{
GET { RETURN CODIGO; }
}
CLASE CUENTA (4/4)
// MÉTODOS DE INSTANCIA
PUBLIC VOID INGRESO(DOUBLE CANTIDAD) {
SALDO = SALDO + CANTIDAD;
}
PUBLIC VOID REINTEGRO(DOUBLE CANTIDAD){
IF (CANTIDAD <= SALDO)
SALDO = SALDO - CANTIDAD;
}
// MÉTODOS DE CLASE
PUBLIC STATIC INT GETNUMEROCUENTAS() {
RETURN ULTIMOCODIGO;
}
} // FIN DE CLASE
CONSTANTES
• LAS CONSTANTES SE DECLARAN CONST
• PRIVATE CONST INT MAX_OPERACIONES = 20;
• ESTA PERMITIDA LA INICIALIZACIÓN DE LOS
ATRIBUTOS EN LA DECLARACIÓN
• PRIVATE DOUBLE SALDO = 100;
• LOS ATRIBUTOS NO INICIALIZADOS EN LA
DECLARACIÓN O EN LOS CONSTRUCTORES
TOMAN EL VALOR POR DEFECTO DE SU TIPO DE
DATOS
• VERIFICAR EL VALOR POR
DEFECTO DE ATRIBUTOS
NO INICIALIZADOS
• INT
• DOUBLE
• STRING
DECLARACIÓN DE PROPIEDADES
PUBLIC DOUBLE SALDO
{
GET { RETURN SALDO; }
}
CONSOLE.WRITELINE("SALDO DE LA CUENTA: " + CUENTA.SALDO);
• SE USAN COMO ATRIBUTOS PERO
EL ACCESO SE REALIZA
INVOCANDO LOS MÉTODOS GET Y
SET
PROPIEDADES
• LOS MÉTODOS GET Y SET PUEDEN REALIZAR CÁLCULOS
PUBLIC DOUBLE SALDODOLAR
{
GET { RETURN SALDO * BANCO.CAMBIODOLAR; }
}
• EL ACCESO A LA PROPIEDAD OCULTA EL CALCULO
CONSOLE.WRITELINE(“SALDO EN DÓLARES” +
CUENTA.SALDODOLAR);
PROPIEDADES
• EN LA DEFINICIÓN DE UN MÉTODO SET, EL
IDENTIFICADOR “VALUE” REPRESENTA EL VALOR QUE
VA A SER ASIGNADO:
PUBLIC DOUBLE _SALDO;
PUBLIC DOUBLE SALDO
{
GET { RETURN _SALDO; }
PRIVATE SET { _SALDO = VALUE; }
}
MAIN(){
DOUBLE S = SALDO;//GET
SALDO = OTROVALOR;//SET
}
• ES POSIBLE
IDENTIFICAR
UN NIVEL DE
VISIBILIDAD
DISTINTO PARA
CADA UNO DE
LOS MÉTODOS
PROPIEDADES
• TAMBIEN SE PUEDEN DECLARAR DE LA SIGUIENTE
FORMA:
PUBLIC DOUBLE SALDO { GET; PRIVATE SET;}
• EJEMPLO DE CALCULO CON PROPIEDADES
PUBLIC DOUBLE SALDOBANCO
{
GET {RETURN SALDO * BANCO.INTERES();}
}
• ES POSIBLE
IDENTIFICAR
UN NIVEL DE
VISIBILIDAD
DISTINTO PARA
CADA UNO DE
LOS MÉTODOS
ESPACIO DE NOMBRES (NAMESPACE)
• MECANISMO PARA ASOCIAR UN
CONJUNTO DE DECLARACIONES DE
UNA MANERA MUY AMPLIA COMO UN
PROYECTO COMPLETO O UN MODULO
MUY GRANDE UN PROYECTO.
• TAMBIÉN PUEDE SER USADA PARA
SEPARAR FUNCIONALIDADES DE TIPO
DE PROYECTO POR EJEMPLO:
MANEJARCONTABILIDAD.
……
USING SYSTEM.TEXT;
USING SYSTEM.THREADING.TASKS;
NAMESPACE PROYECTO1.CARPETA1
{
PUBLIC CLASS PERSONA
{
……
ESPACIO DE NOMBRES (NAMESPACE)
• UN ESPACIO DE NOMBRE SE LLAMA A
TRAVÉS DE LA PALABRA RESERVADA
USING
• PARA DECLARAR EL USO SOLO DE LAS
CLASES Y OBJETOS DE UNA CARPETA
O SUBCARPETA DEL ESPECIO DE
NOMBRE COMO SE VE EN EL EJEMPLO
……
USING SYSTEM.TEXT;
USING SYSTEM.THREADING.TASKS;
NAMESPACE PROYECTO1.CARPETA1
{
PUBLIC CLASS PERSONA
{
……
ENSAMBLADO
• EXTENSION “.DLL” UNIDAD DE
EMPAQUETADO DE SOFTWARE DE
.NET
• UNA VEZ UN PROYECTO SE
ENCUENTRA ENSAMBLADO, NO SE
PUEDE VER NI MODIFICAR SU CÓDIGO
FUENTE PERO SI SE PUEDEN UTILIZAR
SUS CLASES Y OBJETOS AHÍ
DISEÑADOS.
• UN FICHERO EJECUTABLE ES UN
ENSAMBLADO
• UN ENSAMBLADO ES UN
COMPONENTE SOFTWARE
• POR DEFECTO, LA VISIBILIDAD ES
INTERNAL
TIPOS DE LENGUAJE
• COMMON TYPE SYSTEM (CTS)
TIPOS DE LENGUAJE
• C# ES UN LENGUAJE ORIENTADO A
OBJETOS PURO
• TODOS LOS TIPOS DEFINEN OBJETOS
• SE DISTINGUEN DOS TIPOS DE DATOS
• TIPOS CON SEMÁNTICA REFERENCIA:
CLASES, INTERFACES, ARRAYS Y
“DELEGADOS”. ACEPTAN EL VALOR
NULL
• TIPOS CON SEMÁNTICA POR VALOR:
TIPOS PRIMITIVOS, ENUMERADOS Y
ESTRUCTURAS
• LOS TIPOS PRIMITIVOS SON OBJETOS:
• PODEMOS APLICAR MÉTODOS SOBRE
LOS TIPOS PRIMITIVOS COMO
TOSTRING O EQUALS
• TIPOS: CHAR, INT, LONG, FLOAT,
DOUBLE, BOOL ENTRE OTROS.
ENUMERADOS
• DECLARACIÓN
• ENUM ESTADOCUENTA { OPERATIVA, INMOVILIZADA, NUMEROS_ROJOS }
• USO DE UN ENUMERADO:
PUBLIC CLASS CUENTA
{ …
PRIVATE ESTADOCUENTA ESTADO;
PUBLIC CUENTA(PERSONA TITULAR, DOUBLE SALDO)
{ …
ESTADO = ESTADOCUENTA.OPERATIVA;
}
ARRAYS
LOS ARRAYS SON OBJETOS CON SEMÁNTICA REFERENCIA
INT MAX_OPERACIONES = 100;
PRIVATE DOUBLE[] ULTIMASOPERACIONES;
PUBLIC CUENTA(PERSONA TITULAR, DOUBLE SALDO)
{
ULTIMASOPERACIONES = NEW DOUBLE[MAX_OPERACIONES];
}
CONSTRUCCIÓN DE OBJETOS
• DECLARACIÓN Y CONSTRUCCIÓN DE OBJETOS
• LA DECLARACIÓN DE UNA VARIABLE (POR VALOR O REFERENCIA) NO
LA INICIALIZA
• LOS OBJETOS SE CREAN CON EL OPERADOR NEW
PERSONA PERSONA;
PERSONA = NEW PERSONA("34565433", "JUAN GONZÁLEZ");
CUENTA CUENTA = NEW CUENTA(PERSONA, 300);
CONSTRUCTORES
• TIENEN EL NOMBRE DE LA CLASE Y NO DECLARAN TIPO DE
RETORNO
• SE PERMITE SOBRECARGA
• SI NO SE DEFINE UN CONSTRUCTOR, EL COMPILADOR INCLUYE EL
CONSTRUCTOR POR DEFECTO (VACÍO Y SIN ARGUMENTOS)
• PUBLIC PERSONA(STRING NOMBRE, STRING APELLIDO, STRING NUMEROCUENTA){...}
• PUBLIC PERSONA(){…}
CONSTRUCTORES
• SE PUEDEN REUTILIZAR CON LA
PALABRA CLAVE THIS, JUSTO
DESPUÉS DE LA DECLARACIÓN
DE PARÁMETROSPUBLIC CUENTA(PERSONA TITULAR, DOUBLE SALDO)
{ … }
PUBLIC CUENTA(PERSONA TITULAR): THIS(TITULAR, 200)
{
}
DESTRUCTORES
• .NET INCORPORA UN
MECANISMO DE RECOLECCIÓN
DE MEMORIA DINÁMICA:
GARBAGE COLLECTOR
• SE PUEDE DECLARAR EL
MÉTODO FINALIZE() PARA
LIBERAR RECURSOS QUE
QUEDAN FUERA DEL ENTORNO
DE EJECUCIÓN
OPERADORES
• ES POSIBLE REDEFINIR DIVERSOS
OPERADORES ==, !=, <, >
• NO SE PUEDE REDEFINIR EL
OPERADOR DE ASIGNACIÓN =
• LOS OPERADORES SE DECLARAN
COMO MÉTODOS(FUNCIONES) DE
CLASE
• SE UTILIZA COMO NOMBRE DE
MÉTODO OPERATOR SEGUIDO
DEL NOMBRE DE MÉTODO:
• OPERATOR==, OPERATOR<
PUBLIC STATIC BOOL OPERATOR> (C C1, C C2)
{
RETURN (C1.SALDO > C.SALDO);
}
C C1 = NEW C (PERSONA, 100);
C C2 = NEW C (PERSONA, 200);
CONSOLE.WRITELINE (C1 > C2); // FALSE
OPERADORES IMPLICITOS
C# NO PERMITE DEFINIR EL OPERADOR =, PERO OFRECE LA
ALTERNATIVA DE CREAR OPERADORES IMPLÍCITOS
// A PARTIR DE UNA PERSONA CREA UNA CUENTA
PUBLIC STATIC IMPLICIT OPERATOR CUENTA (PERSONA TITULAR)
{
RETURN NEW CUENTA(TITULAR, 500);
}
OPERADORES IMPLICITOS
// SI ES ASIGNADO A UN DOUBLE, SE TOMA EL SALDO
PUBLIC STATIC IMPLICIT OPERATOR DOUBLE (CUENTA CUENTA)
{
RETURN CUENTA.SALDO;
}
PASO DE PARAMETROS: VALOR, REFERENCIA,
SALIDA
VOID METODO(INT VALOR, REF INT REFERENCIA, OUT INT SALIDA)
{
VALOR++; // SE INCREMENTA LA COPIA LOCAL
REFERENCIA++; // SE INCREMENTA EL PARÁMETRO REAL
SALIDA = 1; // ES OBLIGATORIO ASIGNAR UN VALOR
// ANTES DE USARLO
}
PASO DE PARAMETROS: VALOR, REFERENCIA,
SALIDA
INT INTVALOR = 3;
INT INTREFERENCIA = 3;
INT INTSALIDA;
CUENTA.METODO(INTVALOR, REF INTREFERENCIA, OUT INTSALIDA);
CONSOLE.WRITELINE("POR VALOR = " + INTVALOR); // 3
CONSOLE.WRITELINE("POR REFERENCIA = " + INTREFERENCIA); // 4
CONSOLE.WRITELINE("SALIDA = " + INTSALIDA); // 1
SE UTILIZA COMUNMENTE CUANDO SE QUIERE QUE UNA FUNCION RETORNE MAS
DE UNA VARIABLE.
PASO DE OBJETOS COMO PARAMETROS
PUBLIC VOID TRANSFERENCIA (CUENTA EMISOR, CUENTA RECEPTOR, DOUBLE CANTIDAD)
{
// CAMBIA EL ESTADO DE LOS PARÁMETROS REALES
EMISOR.REINTEGRO(CANTIDAD);
RECEPTOR.INGRESO(CANTIDAD);
// NO SE VE AFECTADO EL PARÁMETRO REAL
RECEPTOR = NULL;//A MENOS QUE SE PASE EL PARÁMETRO POR REFERENCIA
}
HISTORIA
• C# ES UN LENGUAJE CREADO POR MICROSOFT Y
LIDERADO POR ANDERS HELJSBERG
• ES UN LENGUAJE ORIENTADO A OBJETOS PURO
INSPIRADO EN C++, JAVA, DELPHI Y EIFFEL
• LAS APLICACIONES C# SON EJECUTADAS EN UN
ENTORNO CONTROLADO LLAMADO CLR
(COMMON LANGUAGE RUNTIME)
• EL LENGUAJE ESTÁ ESTANDARIZADO EN ECMA E
ISO
• ACTUALMENTE ESTÁ EN LA VERSIÓN 3.0
PLATAFORMA .NET
• EL COMPILADOR DE C# GENERA
CÓDIGO INTERMEDIO PARA LA
PLATAFORMA .NET
• EL CÓDIGO INTERMEDIO ES
EJECUTADO POR UNA MÁQUINA
VIRTUAL: CLR
• C# ES SÓLO UNO DE LOS LENGUAJES
DE LA PLATAFORMA .NET: C++,
VB.NET, EIFFEL.NET, ETC.
• LA PLATAFORMA .NET ESTÁ LIGADA
A LOS SISTEMAS OPERATIVOS
WINDOWS
• PROYECTO MONO:
• IMPLEMENTACIÓN DE .NET
EN OTROS SISTEMAS
OPERATIVOS.
• INCLUYE UN COMPILADOR
PARA C#
TAREA
• ARCHIVO CON LOS EJERCICIOS A
REALIZAR PARA EL PRÓXIMO
MIÉRCOLES.
REFERENCIAS
• CLASES Y OBJETOS, MODIFICADORES, NIVELES DE ACCESO
HTTP://MSDN.MICROSOFT.COM/ES-ES/LIBRARY/DD460654.ASPX
• CLASES
HTTP://MSDN.MICROSOFT.COM/ES-ES/LIBRARY/X9AFC042.ASPX

More Related Content

Viewers also liked

Grafos avanzado
Grafos avanzadoGrafos avanzado
Grafos avanzadomenamigue
 
Estructuras de datos y algoritmos
Estructuras de datos y algoritmosEstructuras de datos y algoritmos
Estructuras de datos y algoritmosRobert Rodriguez
 
Introducción a la programación y la informática. Tema 10
Introducción a la programación y la informática. Tema 10Introducción a la programación y la informática. Tema 10
Introducción a la programación y la informática. Tema 10Andres Garcia Garcia
 
Core java by a introduction sandesh sharma
Core java by a introduction sandesh sharmaCore java by a introduction sandesh sharma
Core java by a introduction sandesh sharmaSandesh Sharma
 
Tipos abstractos de datos
Tipos abstractos de datosTipos abstractos de datos
Tipos abstractos de datosJose Armando
 
Java pilas (Stacks) y colas (Queues)
Java pilas (Stacks) y colas (Queues)Java pilas (Stacks) y colas (Queues)
Java pilas (Stacks) y colas (Queues)Juan Astudillo
 
Programación Orientada a Objetos - Resumen
Programación Orientada a Objetos - ResumenProgramación Orientada a Objetos - Resumen
Programación Orientada a Objetos - ResumenKarlytoz_36
 
Estructura de Datos Arreglos
Estructura de Datos ArreglosEstructura de Datos Arreglos
Estructura de Datos Arreglosguestc906c2
 
Introducción a Programación Orientada a Objetos (OOP): Clases y Objetos
Introducción a  Programación Orientada a Objetos (OOP): Clases y ObjetosIntroducción a  Programación Orientada a Objetos (OOP): Clases y Objetos
Introducción a Programación Orientada a Objetos (OOP): Clases y ObjetosKudos S.A.S
 
Xna game studio presentación 01
Xna game studio   presentación 01Xna game studio   presentación 01
Xna game studio presentación 01Juan Cardona
 
Proyectos Web 1 Fundamentos
Proyectos Web   1 FundamentosProyectos Web   1 Fundamentos
Proyectos Web 1 FundamentosJose Ponce
 

Viewers also liked (20)

Estructuras de datos
Estructuras de datosEstructuras de datos
Estructuras de datos
 
1. teoría listas enlazadas
1. teoría listas enlazadas1. teoría listas enlazadas
1. teoría listas enlazadas
 
Pilas en Java
Pilas en JavaPilas en Java
Pilas en Java
 
Grafos avanzado
Grafos avanzadoGrafos avanzado
Grafos avanzado
 
Estructuras de datos y algoritmos
Estructuras de datos y algoritmosEstructuras de datos y algoritmos
Estructuras de datos y algoritmos
 
Introducción a la programación y la informática. Tema 10
Introducción a la programación y la informática. Tema 10Introducción a la programación y la informática. Tema 10
Introducción a la programación y la informática. Tema 10
 
Taller 1 3
Taller 1 3Taller 1 3
Taller 1 3
 
áRboles binarios
áRboles binariosáRboles binarios
áRboles binarios
 
Listas enlazadas
Listas enlazadasListas enlazadas
Listas enlazadas
 
Core java by a introduction sandesh sharma
Core java by a introduction sandesh sharmaCore java by a introduction sandesh sharma
Core java by a introduction sandesh sharma
 
Tipos abstractos de datos
Tipos abstractos de datosTipos abstractos de datos
Tipos abstractos de datos
 
Java pilas (Stacks) y colas (Queues)
Java pilas (Stacks) y colas (Queues)Java pilas (Stacks) y colas (Queues)
Java pilas (Stacks) y colas (Queues)
 
Programación Orientada a Objetos - Resumen
Programación Orientada a Objetos - ResumenProgramación Orientada a Objetos - Resumen
Programación Orientada a Objetos - Resumen
 
Estructura de Datos Arreglos
Estructura de Datos ArreglosEstructura de Datos Arreglos
Estructura de Datos Arreglos
 
Introducción a Programación Orientada a Objetos (OOP): Clases y Objetos
Introducción a  Programación Orientada a Objetos (OOP): Clases y ObjetosIntroducción a  Programación Orientada a Objetos (OOP): Clases y Objetos
Introducción a Programación Orientada a Objetos (OOP): Clases y Objetos
 
Resumen
ResumenResumen
Resumen
 
Xna game studio presentación 01
Xna game studio   presentación 01Xna game studio   presentación 01
Xna game studio presentación 01
 
Manual de C sharp
Manual de C sharpManual de C sharp
Manual de C sharp
 
Manejo de archivos en c#
Manejo de archivos en c#Manejo de archivos en c#
Manejo de archivos en c#
 
Proyectos Web 1 Fundamentos
Proyectos Web   1 FundamentosProyectos Web   1 Fundamentos
Proyectos Web 1 Fundamentos
 

Similar to C sharp fundamentos

Docs, hoja de calculo y presentaciones
Docs, hoja de calculo y presentacionesDocs, hoja de calculo y presentaciones
Docs, hoja de calculo y presentacionesGiselle0407
 
6. PROGRAMACION OO.pptx
6. PROGRAMACION OO.pptx6. PROGRAMACION OO.pptx
6. PROGRAMACION OO.pptxDieguess
 
2. NODE_RED - FUNDAMENTOS DE PROGRAMACIÓN.pdf
2. NODE_RED - FUNDAMENTOS DE PROGRAMACIÓN.pdf2. NODE_RED - FUNDAMENTOS DE PROGRAMACIÓN.pdf
2. NODE_RED - FUNDAMENTOS DE PROGRAMACIÓN.pdfMarcoChannel
 
Diseño y realizacion paulina calva
Diseño y realizacion paulina calvaDiseño y realizacion paulina calva
Diseño y realizacion paulina calvahugopmc
 
Intro a AI con Microsoft.pptx
Intro a AI con Microsoft.pptxIntro a AI con Microsoft.pptx
Intro a AI con Microsoft.pptxLuis Beltran
 
2. Manejo de la sintaxis del lenguaje
2. Manejo de la sintaxis del lenguaje2. Manejo de la sintaxis del lenguaje
2. Manejo de la sintaxis del lenguajeLaura Folgado Galache
 
2. NODE_RED - FUNDAMENTOS DE PROGRAMACIÓN.pptx
2. NODE_RED - FUNDAMENTOS DE PROGRAMACIÓN.pptx2. NODE_RED - FUNDAMENTOS DE PROGRAMACIÓN.pptx
2. NODE_RED - FUNDAMENTOS DE PROGRAMACIÓN.pptxdocmarcoantoniosotov
 
Sr. Pablo García, Internet de las Cosas y Big Data: ¿hacia dónde va la Indust...
Sr. Pablo García, Internet de las Cosas y Big Data: ¿hacia dónde va la Indust...Sr. Pablo García, Internet de las Cosas y Big Data: ¿hacia dónde va la Indust...
Sr. Pablo García, Internet de las Cosas y Big Data: ¿hacia dónde va la Indust...INACAP
 
Modificaciones De Ansi Sql
Modificaciones De Ansi SqlModificaciones De Ansi Sql
Modificaciones De Ansi Sqlguest0c9485
 
Modificaciones De Ansi Sql
Modificaciones De Ansi SqlModificaciones De Ansi Sql
Modificaciones De Ansi Sqlguest0c9485
 
Cetis 109 jen_ax
Cetis 109 jen_axCetis 109 jen_ax
Cetis 109 jen_axJennimtzy
 
Centro de estudios tecnologicos industriales y de servicios
Centro de estudios tecnologicos industriales y de serviciosCentro de estudios tecnologicos industriales y de servicios
Centro de estudios tecnologicos industriales y de serviciossofi877
 

Similar to C sharp fundamentos (20)

Docs, hoja de calculo y presentaciones
Docs, hoja de calculo y presentacionesDocs, hoja de calculo y presentaciones
Docs, hoja de calculo y presentaciones
 
6. PROGRAMACION OO.pptx
6. PROGRAMACION OO.pptx6. PROGRAMACION OO.pptx
6. PROGRAMACION OO.pptx
 
Ios.s2
Ios.s2Ios.s2
Ios.s2
 
Java
JavaJava
Java
 
2. NODE_RED - FUNDAMENTOS DE PROGRAMACIÓN.pdf
2. NODE_RED - FUNDAMENTOS DE PROGRAMACIÓN.pdf2. NODE_RED - FUNDAMENTOS DE PROGRAMACIÓN.pdf
2. NODE_RED - FUNDAMENTOS DE PROGRAMACIÓN.pdf
 
Diseño y realizacion paulina calva
Diseño y realizacion paulina calvaDiseño y realizacion paulina calva
Diseño y realizacion paulina calva
 
Intro a AI con Microsoft.pptx
Intro a AI con Microsoft.pptxIntro a AI con Microsoft.pptx
Intro a AI con Microsoft.pptx
 
2. Manejo de la sintaxis del lenguaje
2. Manejo de la sintaxis del lenguaje2. Manejo de la sintaxis del lenguaje
2. Manejo de la sintaxis del lenguaje
 
Semana2 clases
Semana2 clasesSemana2 clases
Semana2 clases
 
C++_Mod1.pptx
C++_Mod1.pptxC++_Mod1.pptx
C++_Mod1.pptx
 
Javascript
JavascriptJavascript
Javascript
 
2. NODE_RED - FUNDAMENTOS DE PROGRAMACIÓN.pptx
2. NODE_RED - FUNDAMENTOS DE PROGRAMACIÓN.pptx2. NODE_RED - FUNDAMENTOS DE PROGRAMACIÓN.pptx
2. NODE_RED - FUNDAMENTOS DE PROGRAMACIÓN.pptx
 
Sr. Pablo García, Internet de las Cosas y Big Data: ¿hacia dónde va la Indust...
Sr. Pablo García, Internet de las Cosas y Big Data: ¿hacia dónde va la Indust...Sr. Pablo García, Internet de las Cosas y Big Data: ¿hacia dónde va la Indust...
Sr. Pablo García, Internet de las Cosas y Big Data: ¿hacia dónde va la Indust...
 
Modificaciones De Ansi Sql
Modificaciones De Ansi SqlModificaciones De Ansi Sql
Modificaciones De Ansi Sql
 
Modificaciones De Ansi Sql
Modificaciones De Ansi SqlModificaciones De Ansi Sql
Modificaciones De Ansi Sql
 
Cetis 109 jen_ax
Cetis 109 jen_axCetis 109 jen_ax
Cetis 109 jen_ax
 
Centro de estudios tecnologicos industriales y de servicios
Centro de estudios tecnologicos industriales y de serviciosCentro de estudios tecnologicos industriales y de servicios
Centro de estudios tecnologicos industriales y de servicios
 
Java
JavaJava
Java
 
Java
JavaJava
Java
 
manual D.F.D
manual D.F.Dmanual D.F.D
manual D.F.D
 

C sharp fundamentos

  • 2. CLASES Y OBJETOS EN C# 1. MÓDULOS: CLASES, ESTRUCTURAS, ESPACIOS DE NOMBRES, ENSAMBLADOS 2. TIPOS DE LENGUAJE 3. DEFINICIÓN Y SEMÁNTICA DE LOS OPERADORES 4. MÉTODOS Y MENSAJES. PASO DE PARÁMETROS 5. CONSTRUCCIÓN DE OBJETOS
  • 3. NIVELES DE ACCESO DE LAS CLASES • PUBLIC: PERMITE ACCEDER A LAS PARTES DE UNA CLASE DESDE FUERA DE LA CLASE • PRIVATE: SOLO LAS PARTES INTERNAS DE LA CLASE PUEDEN ACCEDER A DICHO ELEMENTO • PROTECTED: CUANDO LA CLASE ES HEREDADA ESTOS ELEMENTOS PUEDEN SER ACCEDIDOS JUNTO CON LOS PÚBLICOS PUBLIC CLASS PERSONA { PUBLIC STRING PRIMERNOMBRE; PUBLIC STRING SEGUNDONOMBRE; PRIVATE INT EDAD; PROTECTED BOOLEAN TIENEEMPLEO; }
  • 4. NIVELES DE ACCESO DE LAS CLASES • INTERNAL: VISIBILIDAD PARA EL ENSAMBLADO • PROTECTED INTERNAL: VISIBILIDAD PARA LA CLASE Y SUBTIPOS DENTRO DEL MISMO ENSAMBLADO
  • 5. ENCAPSULACIÓN DE LAS CLASES • LA ENCAPSULACIÓN DE UNA CLASE PERMITE SOLUCIONAR EL PROBLEMA EN FORMA DE UNA CAJA NEGRA. • NO NOS INTERESA COMO SE REALIZAN LOS CÁLCULOS PERO SI LA RESPUESTA FINAL • MSDN: LA ENCAPSULACIÓN SIGNIFICA QUE UN GRUPO DE PROPIEDADES, MÉTODOS Y OTROS MIEMBROS RELACIONADOS SE TRATAN COMO SI FUESE UNA SOLA UNIDAD
  • 6. ELEMENTOS DE UNA CLASE • VARIABLES, PROPIEDADES O CAMPOS • MÉTODOS O FUNCIONES • CONSTRUCTORES • DESTRUCTORES • EVENTOS • CLASES ANIDADAS PUBLIC CLASS PERSONA { PUBLIC PERSONA() //CONSTRUCTOR { PRIMERNOMBRE = “NO ASIGNADO”; SEGUNDONOMBRE = “NO ASIGNADO”; } PUBLIC STRING PRIMERNOMBRE;//VARAIBLE PUBLIC STRING SEGUNDONOMBRE;//VARAIBLE PUBLIC STRING OBTENERNOMBRE() //METODO { RETURN PRIMERNOMBRE + “ ” + SEGUNDONOMBRE; } }
  • 7. ¿QUÉ ES UNA CLASE?[LINK] • ES UN NUEVO TIPO DE VARIABLE QUE TIENE PROPIEDADES Y CARACTERÍSTICAS PROPIAS Y ASOCIADAS ENTRE SÍ, DISEÑADAS CADA UNA DE ELLAS PARA ALMACENAR CIERTO TIPO DE INFORMACIÓN Y SOLUCIONAR UN PROBLEMA ESPECIFICO SIENDO ESTA (LA CLASE) PARTE DE UN SISTEMA MAYOR O MAS GRANDE PUBLIC CLASS CLIENTE { //TIPOS, METODOS Y EVENTOS VAN AQUI... }
  • 8. EJEMPLO • CREEMOS UN SISTEMA DE CLASES QUE SOLUCIONE UN PROBLEMA PARA ENTENDER MEJOR COMO FUNCIONA ESTO. • SISTEMA DE CLASIFICACIÓN DE PERSONAL (SCP). REALIZAR CLASES QUE PERMITA RECONOCER A UNA PERSONA POR LAS DIFERENTES CARACTERÍSTICAS QUE ESTA POSEA EN SU VIDA. SALUD, FÍSICO, MENTAL • PARA DESARROLLAR EL EJEMPLO PODEMOS HACERNOS LAS SIGUIENTES PREGUNTAS • ¿QUÉ VARIABLES SON NECESARIAS PARA CADA CASO? • ¿QUÉ FUNCIONES SON NECESARIAS PARA MANTENER DICHA INFORMACIÓN? • ¿CUÁLES SON LOS CÁLCULOS A REALIZAR EN CADA CASO?
  • 9. CLASES Y OBJETOS EN C# • CLASES • PROPIEDADES • VISIBILIDAD • ESPACIOS DE NOMBRES • ENSAMBLADOS • TIPOS DEL LENGUAJE • CONSTRUCCIÓN DE OBJETOS • ESTRUCTURAS • ASIGNACIÓN Y COPIA • IDENTIDAD E IGUALDAD • MÉTODOS Y MENSAJES • PASO DE PARÁMETROS • OPERADORES • INSTANCIA ACTUAL • MÉTODO MAIN
  • 10. CLASES Y OBJETOS [LINK] • CREAR OBJETOS • AUNQUE SE UTILIZAN A VECES DE FORMA INTERCAMBIABLE, UNA CLASE Y UN OBJETO SON COSAS DIFERENTES. • UN OBJETO ES UNA ENTIDAD CONCRETA BASADA EN UNA CLASE Y, A VECES, SE DENOMINA INSTANCIA DE UNA CLASE • UNA CLASE DEFINE UN TIPO DE OBJETO, PERO NO ES PROPIAMENTE UN OBJETO
  • 11. CLASES Y OBJETOS • LOS OBJETOS SE PUEDEN CREAR CON LA PALABRA CLAVE NEW SEGUIDA DEL NOMBRE DE LA CLASE EN LA QUE SE BASARÁ EL OBJETO CLIENTE OBJETO1 = NEW CLIENTE(); //NUEVO OBJETO CLIENTE OBJETO2; //UNA REFERENCIA A OBJETO SIN CREAR EL OBJETO CLIENTE OBJETO3 = OBJETO1; //CREA UNA REFERENCIA ENTRE AMBOS OBJETOS
  • 12. CLASES • EN C# LOS ELEMENTOS QUE CONTIENE UNA CLASE SON: • ATRIBUTOS • MÉTODOS • CONSTRUCTORES • LA DECLARACIÓN DE UNA CLASE • INCLUYE LA DEFINICIÓN E IMPLEMENTACIÓN • UN FICHERO DE CÓDIGO FUENTE (EXTENSIÓN .CS) PUEDE CONTENER LA DECLARACIÓN DE VARIAS CLASES PUBLIC CLASS PERSONA { PUBLIC PERSONA() { NOMBRE = "NO ASIGNADO"; } PUBLIC STRING NOMBRE; PUBLIC VOID ASIGNANOMBRE () { NOMBRE = “RAFAEL”; } }
  • 13. CLASES • C# AÑADE 2 NUEVOS TIPOS DE DECLARACIONES • PROPIEDADES • REPRESENTAN CARACTERÍSTICAS DE LOS OBJETOS QUE SON ACCEDIDAS COMO SI FUERAN ATRIBUTOS • OCULTAN EL USO DE GET/SET • UNA PROPIEDAD PUEDE REPRESENTAR UN ATRIBUTO CALCULADO • EVENTOS • NOTIFICACIONES QUE ENVÍA UN OBJETO A OTROS OBJETOS CUANDO SE PRODUCE UN CAMBIO DE ESTADO SIGNIFICATIVO • PROPIEDADES Y EVENTOS SON EL SOPORTE PARA EL DESARROLLO DE SOFTWARE BASADO EN COMPONENTES
  • 14. CLASE CUENTA (1/4) PUBLIC CLASS CUENTA { // CONSTANTE PRIVATE CONST INT MAX_OPERACIONES = 20; // ATRIBUTO DE CLASE PRIVATE STATIC INT ULTIMOCODIGO = 0; // ATRIBUTOS DE INSTANCIA PRIVATE INT CODIGO; PRIVATE DOUBLE SALDO = 100; PRIVATE READONLY PERSONA TITULAR; PRIVATE ESTADOCUENTA ESTADO; PRIVATE DOUBLE[] ULTIMASOPERACIONES;
  • 15. CLASE CUENTA (2/4) // CONSTRUCTOR PUBLIC CUENTA(PERSONA TITULAR, DOUBLE SALDO) { THIS.CODIGO = ++ULTIMOCODIGO; THIS.TITULAR = TITULAR; THIS.SALDO = SALDO; ESTADO = ESTADOCUENTA.OPERATIVA; ULTIMASOPERACIONES = NEW DOUBLE[MAX_OPERACIONES]; }
  • 16. CLASE CUENTA (3/4) // PROPIEDADES PUBLIC DOUBLE SALDO { GET { RETURN SALDO; } } PUBLIC PERSONA TITULAR { GET { RETURN TITULAR; } } PUBLIC INT CODIGO { GET { RETURN CODIGO; } }
  • 17. CLASE CUENTA (4/4) // MÉTODOS DE INSTANCIA PUBLIC VOID INGRESO(DOUBLE CANTIDAD) { SALDO = SALDO + CANTIDAD; } PUBLIC VOID REINTEGRO(DOUBLE CANTIDAD){ IF (CANTIDAD <= SALDO) SALDO = SALDO - CANTIDAD; } // MÉTODOS DE CLASE PUBLIC STATIC INT GETNUMEROCUENTAS() { RETURN ULTIMOCODIGO; } } // FIN DE CLASE
  • 18. CONSTANTES • LAS CONSTANTES SE DECLARAN CONST • PRIVATE CONST INT MAX_OPERACIONES = 20; • ESTA PERMITIDA LA INICIALIZACIÓN DE LOS ATRIBUTOS EN LA DECLARACIÓN • PRIVATE DOUBLE SALDO = 100; • LOS ATRIBUTOS NO INICIALIZADOS EN LA DECLARACIÓN O EN LOS CONSTRUCTORES TOMAN EL VALOR POR DEFECTO DE SU TIPO DE DATOS • VERIFICAR EL VALOR POR DEFECTO DE ATRIBUTOS NO INICIALIZADOS • INT • DOUBLE • STRING
  • 19. DECLARACIÓN DE PROPIEDADES PUBLIC DOUBLE SALDO { GET { RETURN SALDO; } } CONSOLE.WRITELINE("SALDO DE LA CUENTA: " + CUENTA.SALDO); • SE USAN COMO ATRIBUTOS PERO EL ACCESO SE REALIZA INVOCANDO LOS MÉTODOS GET Y SET
  • 20. PROPIEDADES • LOS MÉTODOS GET Y SET PUEDEN REALIZAR CÁLCULOS PUBLIC DOUBLE SALDODOLAR { GET { RETURN SALDO * BANCO.CAMBIODOLAR; } } • EL ACCESO A LA PROPIEDAD OCULTA EL CALCULO CONSOLE.WRITELINE(“SALDO EN DÓLARES” + CUENTA.SALDODOLAR);
  • 21. PROPIEDADES • EN LA DEFINICIÓN DE UN MÉTODO SET, EL IDENTIFICADOR “VALUE” REPRESENTA EL VALOR QUE VA A SER ASIGNADO: PUBLIC DOUBLE _SALDO; PUBLIC DOUBLE SALDO { GET { RETURN _SALDO; } PRIVATE SET { _SALDO = VALUE; } } MAIN(){ DOUBLE S = SALDO;//GET SALDO = OTROVALOR;//SET } • ES POSIBLE IDENTIFICAR UN NIVEL DE VISIBILIDAD DISTINTO PARA CADA UNO DE LOS MÉTODOS
  • 22. PROPIEDADES • TAMBIEN SE PUEDEN DECLARAR DE LA SIGUIENTE FORMA: PUBLIC DOUBLE SALDO { GET; PRIVATE SET;} • EJEMPLO DE CALCULO CON PROPIEDADES PUBLIC DOUBLE SALDOBANCO { GET {RETURN SALDO * BANCO.INTERES();} } • ES POSIBLE IDENTIFICAR UN NIVEL DE VISIBILIDAD DISTINTO PARA CADA UNO DE LOS MÉTODOS
  • 23. ESPACIO DE NOMBRES (NAMESPACE) • MECANISMO PARA ASOCIAR UN CONJUNTO DE DECLARACIONES DE UNA MANERA MUY AMPLIA COMO UN PROYECTO COMPLETO O UN MODULO MUY GRANDE UN PROYECTO. • TAMBIÉN PUEDE SER USADA PARA SEPARAR FUNCIONALIDADES DE TIPO DE PROYECTO POR EJEMPLO: MANEJARCONTABILIDAD. …… USING SYSTEM.TEXT; USING SYSTEM.THREADING.TASKS; NAMESPACE PROYECTO1.CARPETA1 { PUBLIC CLASS PERSONA { ……
  • 24. ESPACIO DE NOMBRES (NAMESPACE) • UN ESPACIO DE NOMBRE SE LLAMA A TRAVÉS DE LA PALABRA RESERVADA USING • PARA DECLARAR EL USO SOLO DE LAS CLASES Y OBJETOS DE UNA CARPETA O SUBCARPETA DEL ESPECIO DE NOMBRE COMO SE VE EN EL EJEMPLO …… USING SYSTEM.TEXT; USING SYSTEM.THREADING.TASKS; NAMESPACE PROYECTO1.CARPETA1 { PUBLIC CLASS PERSONA { ……
  • 25. ENSAMBLADO • EXTENSION “.DLL” UNIDAD DE EMPAQUETADO DE SOFTWARE DE .NET • UNA VEZ UN PROYECTO SE ENCUENTRA ENSAMBLADO, NO SE PUEDE VER NI MODIFICAR SU CÓDIGO FUENTE PERO SI SE PUEDEN UTILIZAR SUS CLASES Y OBJETOS AHÍ DISEÑADOS. • UN FICHERO EJECUTABLE ES UN ENSAMBLADO • UN ENSAMBLADO ES UN COMPONENTE SOFTWARE • POR DEFECTO, LA VISIBILIDAD ES INTERNAL
  • 26. TIPOS DE LENGUAJE • COMMON TYPE SYSTEM (CTS)
  • 27. TIPOS DE LENGUAJE • C# ES UN LENGUAJE ORIENTADO A OBJETOS PURO • TODOS LOS TIPOS DEFINEN OBJETOS • SE DISTINGUEN DOS TIPOS DE DATOS • TIPOS CON SEMÁNTICA REFERENCIA: CLASES, INTERFACES, ARRAYS Y “DELEGADOS”. ACEPTAN EL VALOR NULL • TIPOS CON SEMÁNTICA POR VALOR: TIPOS PRIMITIVOS, ENUMERADOS Y ESTRUCTURAS • LOS TIPOS PRIMITIVOS SON OBJETOS: • PODEMOS APLICAR MÉTODOS SOBRE LOS TIPOS PRIMITIVOS COMO TOSTRING O EQUALS • TIPOS: CHAR, INT, LONG, FLOAT, DOUBLE, BOOL ENTRE OTROS.
  • 28. ENUMERADOS • DECLARACIÓN • ENUM ESTADOCUENTA { OPERATIVA, INMOVILIZADA, NUMEROS_ROJOS } • USO DE UN ENUMERADO: PUBLIC CLASS CUENTA { … PRIVATE ESTADOCUENTA ESTADO; PUBLIC CUENTA(PERSONA TITULAR, DOUBLE SALDO) { … ESTADO = ESTADOCUENTA.OPERATIVA; }
  • 29. ARRAYS LOS ARRAYS SON OBJETOS CON SEMÁNTICA REFERENCIA INT MAX_OPERACIONES = 100; PRIVATE DOUBLE[] ULTIMASOPERACIONES; PUBLIC CUENTA(PERSONA TITULAR, DOUBLE SALDO) { ULTIMASOPERACIONES = NEW DOUBLE[MAX_OPERACIONES]; }
  • 30. CONSTRUCCIÓN DE OBJETOS • DECLARACIÓN Y CONSTRUCCIÓN DE OBJETOS • LA DECLARACIÓN DE UNA VARIABLE (POR VALOR O REFERENCIA) NO LA INICIALIZA • LOS OBJETOS SE CREAN CON EL OPERADOR NEW PERSONA PERSONA; PERSONA = NEW PERSONA("34565433", "JUAN GONZÁLEZ"); CUENTA CUENTA = NEW CUENTA(PERSONA, 300);
  • 31. CONSTRUCTORES • TIENEN EL NOMBRE DE LA CLASE Y NO DECLARAN TIPO DE RETORNO • SE PERMITE SOBRECARGA • SI NO SE DEFINE UN CONSTRUCTOR, EL COMPILADOR INCLUYE EL CONSTRUCTOR POR DEFECTO (VACÍO Y SIN ARGUMENTOS) • PUBLIC PERSONA(STRING NOMBRE, STRING APELLIDO, STRING NUMEROCUENTA){...} • PUBLIC PERSONA(){…}
  • 32. CONSTRUCTORES • SE PUEDEN REUTILIZAR CON LA PALABRA CLAVE THIS, JUSTO DESPUÉS DE LA DECLARACIÓN DE PARÁMETROSPUBLIC CUENTA(PERSONA TITULAR, DOUBLE SALDO) { … } PUBLIC CUENTA(PERSONA TITULAR): THIS(TITULAR, 200) { }
  • 33. DESTRUCTORES • .NET INCORPORA UN MECANISMO DE RECOLECCIÓN DE MEMORIA DINÁMICA: GARBAGE COLLECTOR • SE PUEDE DECLARAR EL MÉTODO FINALIZE() PARA LIBERAR RECURSOS QUE QUEDAN FUERA DEL ENTORNO DE EJECUCIÓN
  • 34. OPERADORES • ES POSIBLE REDEFINIR DIVERSOS OPERADORES ==, !=, <, > • NO SE PUEDE REDEFINIR EL OPERADOR DE ASIGNACIÓN = • LOS OPERADORES SE DECLARAN COMO MÉTODOS(FUNCIONES) DE CLASE • SE UTILIZA COMO NOMBRE DE MÉTODO OPERATOR SEGUIDO DEL NOMBRE DE MÉTODO: • OPERATOR==, OPERATOR< PUBLIC STATIC BOOL OPERATOR> (C C1, C C2) { RETURN (C1.SALDO > C.SALDO); } C C1 = NEW C (PERSONA, 100); C C2 = NEW C (PERSONA, 200); CONSOLE.WRITELINE (C1 > C2); // FALSE
  • 35. OPERADORES IMPLICITOS C# NO PERMITE DEFINIR EL OPERADOR =, PERO OFRECE LA ALTERNATIVA DE CREAR OPERADORES IMPLÍCITOS // A PARTIR DE UNA PERSONA CREA UNA CUENTA PUBLIC STATIC IMPLICIT OPERATOR CUENTA (PERSONA TITULAR) { RETURN NEW CUENTA(TITULAR, 500); }
  • 36. OPERADORES IMPLICITOS // SI ES ASIGNADO A UN DOUBLE, SE TOMA EL SALDO PUBLIC STATIC IMPLICIT OPERATOR DOUBLE (CUENTA CUENTA) { RETURN CUENTA.SALDO; }
  • 37. PASO DE PARAMETROS: VALOR, REFERENCIA, SALIDA VOID METODO(INT VALOR, REF INT REFERENCIA, OUT INT SALIDA) { VALOR++; // SE INCREMENTA LA COPIA LOCAL REFERENCIA++; // SE INCREMENTA EL PARÁMETRO REAL SALIDA = 1; // ES OBLIGATORIO ASIGNAR UN VALOR // ANTES DE USARLO }
  • 38. PASO DE PARAMETROS: VALOR, REFERENCIA, SALIDA INT INTVALOR = 3; INT INTREFERENCIA = 3; INT INTSALIDA; CUENTA.METODO(INTVALOR, REF INTREFERENCIA, OUT INTSALIDA); CONSOLE.WRITELINE("POR VALOR = " + INTVALOR); // 3 CONSOLE.WRITELINE("POR REFERENCIA = " + INTREFERENCIA); // 4 CONSOLE.WRITELINE("SALIDA = " + INTSALIDA); // 1 SE UTILIZA COMUNMENTE CUANDO SE QUIERE QUE UNA FUNCION RETORNE MAS DE UNA VARIABLE.
  • 39. PASO DE OBJETOS COMO PARAMETROS PUBLIC VOID TRANSFERENCIA (CUENTA EMISOR, CUENTA RECEPTOR, DOUBLE CANTIDAD) { // CAMBIA EL ESTADO DE LOS PARÁMETROS REALES EMISOR.REINTEGRO(CANTIDAD); RECEPTOR.INGRESO(CANTIDAD); // NO SE VE AFECTADO EL PARÁMETRO REAL RECEPTOR = NULL;//A MENOS QUE SE PASE EL PARÁMETRO POR REFERENCIA }
  • 40. HISTORIA • C# ES UN LENGUAJE CREADO POR MICROSOFT Y LIDERADO POR ANDERS HELJSBERG • ES UN LENGUAJE ORIENTADO A OBJETOS PURO INSPIRADO EN C++, JAVA, DELPHI Y EIFFEL • LAS APLICACIONES C# SON EJECUTADAS EN UN ENTORNO CONTROLADO LLAMADO CLR (COMMON LANGUAGE RUNTIME) • EL LENGUAJE ESTÁ ESTANDARIZADO EN ECMA E ISO • ACTUALMENTE ESTÁ EN LA VERSIÓN 3.0
  • 41. PLATAFORMA .NET • EL COMPILADOR DE C# GENERA CÓDIGO INTERMEDIO PARA LA PLATAFORMA .NET • EL CÓDIGO INTERMEDIO ES EJECUTADO POR UNA MÁQUINA VIRTUAL: CLR • C# ES SÓLO UNO DE LOS LENGUAJES DE LA PLATAFORMA .NET: C++, VB.NET, EIFFEL.NET, ETC. • LA PLATAFORMA .NET ESTÁ LIGADA A LOS SISTEMAS OPERATIVOS WINDOWS • PROYECTO MONO: • IMPLEMENTACIÓN DE .NET EN OTROS SISTEMAS OPERATIVOS. • INCLUYE UN COMPILADOR PARA C#
  • 42. TAREA • ARCHIVO CON LOS EJERCICIOS A REALIZAR PARA EL PRÓXIMO MIÉRCOLES.
  • 43. REFERENCIAS • CLASES Y OBJETOS, MODIFICADORES, NIVELES DE ACCESO HTTP://MSDN.MICROSOFT.COM/ES-ES/LIBRARY/DD460654.ASPX • CLASES HTTP://MSDN.MICROSOFT.COM/ES-ES/LIBRARY/X9AFC042.ASPX