Diese Präsentation wurde erfolgreich gemeldet.
Die SlideShare-Präsentation wird heruntergeladen. ×

Programación Orientada a Objetos - Unidad 2: clases y objetos

Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Anzeige
Wird geladen in …3
×

Hier ansehen

1 von 60 Anzeige

Programación Orientada a Objetos - Unidad 2: clases y objetos

Herunterladen, um offline zu lesen

Tecnológico Nacional de México
Ingeniería en Sistemas Computacionales
Programación Orientada a Objetos
Unidad 2: clases y objetos en C#.Net
Material desarrollado para la asignatura de Programación Orientada a Objetos, que se cursa en el segundo semestre de la carrera de ISC.

Tecnológico Nacional de México
Ingeniería en Sistemas Computacionales
Programación Orientada a Objetos
Unidad 2: clases y objetos en C#.Net
Material desarrollado para la asignatura de Programación Orientada a Objetos, que se cursa en el segundo semestre de la carrera de ISC.

Anzeige
Anzeige

Weitere Verwandte Inhalte

Diashows für Sie (20)

Ähnlich wie Programación Orientada a Objetos - Unidad 2: clases y objetos (20)

Anzeige

Weitere von José Antonio Sandoval Acosta (20)

Aktuellste (20)

Anzeige

Programación Orientada a Objetos - Unidad 2: clases y objetos

  1. 1. TECNOLÓGICO NACIONAL DE MÉXICO Instituto Tecnológico Superior de Guasave Ingeniería en Sistemas Computacionales Programación Orientada a Objetos Unidad 2: Clases y Objetos www.itsguasave.edu.mx
  2. 2. PROGRAMACIÓN ORIENTADA A OBJETOS Competencia de la unidad: Aplica los conceptos de clases y objetos en el desarrollo de programas para solución de problemas de acuerdo al paradigma orientado a objetos.
  3. 3. Lenguaje de programación a utilizar • C # (Visual Studio para trabajar en modo consola) PROGRAMACIÓN ORIENTADA A OBJETOS
  4. 4. Estructura básica de un programa en C# using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace ConsoleApp1 { class Program { //declaración de variables globales static void Main(string[] args) { } } } PROGRAMACIÓN ORIENTADA A OBJETOS
  5. 5. Identificadores Un identificador le da nombre único a un elemento en un programa (Variables, procedimientos, etc.). • No puede contener operadores como + - * / • Debe iniciar con letra o el guion bajo ( _ ) • Puede tener cualquier longitud • Puede contener mayúsculas y minúsculas • En un identificador sí se hace diferencia entre mayúsculas y minúsculas. De esta manera, “suma” es diferente de “Suma” • No debe ser una palabra reservada PROGRAMACIÓN ORIENTADA A OBJETOS
  6. 6. Tipos de Datos • int número entero • double número flotante • char un solo carácter • string cadena de caracteres • bool booleano (Verdadero, Falso) • DateTime fecha/hora PROGRAMACIÓN ORIENTADA A OBJETOS
  7. 7. Declaración de Variables string Nombre; int HorasTrabajadas; double SueldoPorHora; char Otro; También se pueden inicializar las variables al mismo tiempo que se declaran: string Nombre = “Juan”; int HorasTrabajadas = 40; double SueldoPorHora = 150.00; char Otro = 'N'; PROGRAMACIÓN ORIENTADA A OBJETOS
  8. 8. Impresión de información (Proyectos de Consola) Console.WriteLine (" Hola "); Console.WriteLine( Sueldo ); Console.WriteLine ( " Mi nombre es {0} y gano {1} ", Nombre, Sueldo); Console.WriteLine (" Nombre: " + Nombre); PROGRAMACIÓN ORIENTADA A OBJETOS Parámetros de sustitución Concatenación
  9. 9. Sentencias using Si se agregan al inicio de la clase, NO es necesario repetirlas en cada instrucción. Por ejemplo, si al inicio de la clase se agrega: using System; puede usarse durante toda la clase: Console.WriteLine( “ Hola Mundo ” ); en lugar de: System.Console.WriteLine( “Hola Mundo ” ); PROGRAMACIÓN ORIENTADA A OBJETOS
  10. 10. Pedir Datos (captura en proyectos de consola) Nombre = Console.ReadLine(); HorasTrabajadas = Convert.ToInt32(Console.ReadLine()); HorasTrabajadas = int.Parse(Console.ReadLine()); PROGRAMACIÓN ORIENTADA A OBJETOS Conversión de String a Entero TAMBIEN puede hacerse así: Pedir un dato StringEl resultado se almacena en esta variable
  11. 11. Cálculos y Asignaciones SueldoTotal = HorasTrabajadas * SueldoPorHora; Descuento = SueldoTotal * 0.08; SueldoTotal = SueldoTotal - Descuento; Bonos = 200; SueldoTotal = SueldoTotal + Bonos; PROGRAMACIÓN ORIENTADA A OBJETOS Cálculos Asignación
  12. 12. Operadores Aritméticos + Suma - Resta * Multiplicación / División % Residuo de división entera = Igualdad ++ Incremento en 1 -- Decremento en 1 PROGRAMACIÓN ORIENTADA A OBJETOS Jerarquía: Primero se ejecutan * / (el que está más a la izuierda) Después se ejecutan + - (el que está más a la izuierda) Los paréntesis alteran la jerarquía
  13. 13. Operadores de asignación adicionales Sirven para simplificar expresiones de asignación. Ejemplos: a += 5 → a = a + 5 a -= 5 → a = a - 5 a *= 5 → a = a * 5 a /= 5 → a = a / 5 Ejemplos con los Operadores de Autoincremento: x ++ → x = x + 1 x -- → x = x - 1 PROGRAMACIÓN ORIENTADA A OBJETOS
  14. 14. Clases y objetos • Una clase es básicamente un plano para un tipo de datos personalizado. • Cuando se define una clase, se utiliza cargándola en la memoria. • Una clase que se ha cargado en la memoria se denomina objeto o instancia. • Se crea una instancia de una clase utilizando la palabra reservada new PROGRAMACIÓN ORIENTADA A OBJETOS
  15. 15. Cómo declarar una clase class nombre_de_la_clase { //contenido de la clase … } PROGRAMACIÓN ORIENTADA A OBJETOS
  16. 16. Dentro de la clase… • Se pueden declarar variables, propiedades, métodos, delegados, eventos, etc. • Cada elemento puede tener un modificador de acceso. • Un modificador de acceso especifica quienes están autorizados a “ver” ese elemento. • Si no se especifica ningún modificador de acceso, se asume que se trata de un elemento “private”. PROGRAMACIÓN ORIENTADA A OBJETOS
  17. 17. Modificadores de acceso Cuando no se indica el modificador de acceso por default es private • public: Accesible a todos los elementos • private: Accesible solo a esa misma clase • protected: Accesible solo a la misma clase y métodos de sus clases derivadas. No accesible desde el exterior. • internal: Accesible solo a ese ensamblado • protected internal: Accesible desde el mismo ensamblado, la misma clase y métodos de sus clases derivadas PROGRAMACIÓN ORIENTADA A OBJETOS
  18. 18. Modificadores de acceso PROGRAMACIÓN ORIENTADA A OBJETOS
  19. 19. Atributos o campos • Un atributo o campo es un dato común a todos los objetos de una determinada clase. • Las variables declaradas dentro de una clase son ejemplos de atributos o campos. PROGRAMACIÓN ORIENTADA A OBJETOS
  20. 20. // Ejemplo de una clase class CuentaBancaria { public string strNombreCliente; public DateTime dtmFechaDeInversion; private double _dblSaldo; public int CalcularDiasDeInversion() { … } private double ConsultarSaldo() { … } public void Depositar(double dblCantidad, DateTime dtmFecha) { … } public bool OtorgarBono() { … } }// fin de la clase PROGRAMACIÓN ORIENTADA A OBJETOS
  21. 21. Crear objetos: Instanciación • Una vez creada la clase, ya es posible “consumirla” mediante la instanciación. • La instanciación es el proceso de crear objetos a partir de una clase. Ejemplo en dos pasos: ClaseA miobjetoA; miobjetoA = new ClaseA(); Ejemplo en un paso: ClaseA miobjetoA = new ClaseA(); PROGRAMACIÓN ORIENTADA A OBJETOS
  22. 22. Accediendo a los miembros de los objetos • Asignación: miobjetoA . Numero2 = 50; • Lectura: miVariable = miobjetoA.Numero2; PROGRAMACIÓN ORIENTADA A OBJETOS Nombre del objeto Selección Miembro Operación
  23. 23. Ejercicio • Utilizando POO hacer programa para solucionar el área de un círculo: Fórmula=pi*(r*r) • Debes declarar la clase Circle y heredarla en un objeto llamado circulo, • Dentro de la clase debes declarar el constructor correspondiente y un método que calcule el área del circulo regresando el valor correspondiente a la rutina principal y desplegarlo allí. PROGRAMACIÓN ORIENTADA A OBJETOS
  24. 24. Métodos • Contienen instrucciones para ejecutar al momento de ser invocados. Un método contiene: • Modificador de Acceso (Determina su visibilidad) • Tipo de dato (Devuelto al finalizar su ejecución) • Identificador (Nombre con el cual se invoca) • Parámetros (Cero o mas variables que recibe el método) PROGRAMACIÓN ORIENTADA A OBJETOS
  25. 25. La referencia this • Para hacer referencia (explícita) a un elemento que se encuentra dentro de la misma clase (ésta) se utiliza “this”. class Articulo { private double precio; public void Articulo() { precio = 0; } public void setPrecio (double precio ){ this.precio = precio; } public double getPrecio() { return this.precio; } }// fin de la clase PROGRAMACIÓN ORIENTADA A OBJETOS
  26. 26. La referencia this… class Programa { static void Main() { double precio=0; Articulo art = new Articulo(); art.setPrecio(34.00); precio=art.getPrecio(); Console.WriteLine(precio); Console.ReadLine(); } }// fin de la clase PROGRAMACIÓN ORIENTADA A OBJETOS
  27. 27. Codificación de la referencia this class Persona { private string nombre; private int edad; public void ModificarDatos(string nombre, int edad) { this.nombre = nombre; this.edad = edad; } } PROGRAMACIÓN ORIENTADA A OBJETOS
  28. 28. Sobrecarga • Se refiere a la posibilidad de crear métodos que posean el mismo nombre y difieran en la cantidad y/o tipo de parámetros (firma). • No es posible crear 2 funciones con el mismo identificador que solo difieran en el tipo de dato devuelto (misma firma). static bool impresion(int num) static char impresion(int num) PROGRAMACIÓN ORIENTADA A OBJETOS Error (misma firma)
  29. 29. Ejemplo de Sobrecarga class Impresion { public void Imprimir() { Console.WriteLine("Sistema de Usuarios"); } public void Imprimir(string mensaje){ Console.WriteLine(mensaje); } public void Imprimir (string titulo, string mensaje) { Console.WriteLine("===== " + titulo + " ====="); Console.WriteLine(mensaje); } }// fin de la clase PROGRAMACIÓN ORIENTADA A OBJETOS
  30. 30. Ejemplo de Sobrecarga… class Programa { static void Main() { Impresion im = new Impresion (); im.Imprimir(); im.Imprimir("Siga las instrucciones en pantalla", "Use minusculas"); im.Imprimir(" Gracias! "); Console.ReadLine(); } }// fin de la clase PROGRAMACIÓN ORIENTADA A OBJETOS
  31. 31. Método constructor • Método especial que es invocado automáticamente cada vez que un objeto nuevo es creado (new). • Debe poseer el mismo nombre de la clase. • No posee tipo de dato de retorno. • Si la clase no posee un constructor, C# crea uno vacío por default. PROGRAMACIÓN ORIENTADA A OBJETOS
  32. 32. PROGRAMACIÓN ORIENTADA A OBJETOS ¿Qué es un constructor?
  33. 33. Ejemplo: class Persona { public string Nombre; public Persona() { Nombre = "Desconocido"; } } PROGRAMACIÓN ORIENTADA A OBJETOS class Programa { static void Main() { Persona unaPersona = new Persona(); Console.WriteLine( unaPersona.Nombre); Console.ReadLine(); } }
  34. 34. Constructor con parámetros class Persona { public string Nombre; public Persona(string Nombre) { this.Nombre = Nombre; } } class Programa { static void Main() { Persona otraPersona = new Persona("Ramóan"); Console.WriteLine( otraPersona.Nombre); Console.ReadLine(); } } PROGRAMACIÓN ORIENTADA A OBJETOS
  35. 35. Ejercicio: basándose en los dos ejemplos anteriores realice un programa utilizando métodos constructores sobrecargados, deben ser al menos dos métodos, y también debe realizar las funciones get() y set() correspondientes el atributo Nombre. PROGRAMACIÓN ORIENTADA A OBJETOS
  36. 36. Ejercicio: Utilizando POO hacer un programa que solucione el problema de una gasolinera, sus bombas surten la gasolina en galones pero la cobran en litros, mostrar en pantalla cuanto se debe cobrar dependiendo de la cantidad de galones vendidos y el precio de la gasolina (precio variable), un galón equivale a 3.785 litros. • Debe declarar los constructores que se requieran • Debe utilizar dos clases, una para realizar los cálculos y otra para capturar valor inicial y mostrar resultados. • En la clase que realiza cálculos las variables deben ser privadas por lo que debe tener tantos métodos get() y set() sean necesarios. PROGRAMACIÓN ORIENTADA A OBJETOS
  37. 37. Práctica: • Utilizando POO hacer programa que convierta los datos de una persona, su peso en libras y su estatura en pies (medidas americanas) a su peso a kilos y su estatura a metros (medidas métrico-decimales): 1 libra equivale a 0.4536 kilos 1 pie equivale a 0.3047 metros • Los valores en pies y libras debe capturarlos en la rutina main. • En la clase adicional debe hacer un método por cada conversión y devuelvan los valores a la rutina main donde deben ser desplegados. PROGRAMACIÓN ORIENTADA A OBJETOS
  38. 38. Ejercicio: Utilizando POO: En un almacén se hace un 20% de descuento a los clientes cuya compra supere los $1000. ¿Cuál será la cantidad que pagara una persona por su compra? PROGRAMACIÓN ORIENTADA A OBJETOS
  39. 39. Método destructor • No puede llamarse explícitamente. • Se invoca automáticamente cuando el objeto es destruido. • Invocado por el Garbage Collector (GC) justo antes de desasignar la memoria del objeto. • Usado para cerrar archivos, conexiones de red, canales abiertos, etc. • Sintaxis similar al método constructor, pero anteponiendo una tilde (~) al nombre. PROGRAMACIÓN ORIENTADA A OBJETOS
  40. 40. ¿Qué es un destructor? PROGRAMACIÓN ORIENTADA A OBJETOS
  41. 41. Ejemplo de un destructor class Empleado { ~Empleado() { Console.WriteLine("Se ha destruido el Empleado "); Console.ReadLine(); } } Al ejercicio anterior agregue un destructor (diapositiva 38). PROGRAMACIÓN ORIENTADA A OBJETOS
  42. 42. Destrucción de objetos • C# gestiona la memoria de modo automático mediante el “recolector de basura” (Garbage Collector o GC), quien se encarga de eliminar la memoria que en algún momento se solicitó y no se ocupa mas. • En C# no existe el operador contrario a “new”. • Por lo que, de manera general, NO es posible controlar exactamente el momento en el cual la memoria vuelve a estar disponible. • Se puede indicar en el programa cuando un objeto deja de ser util, asignándole el valor “null”: miObjeto = null; • Cuando el GC lo note tomará cartas en el asunto. • El instante preciso en que el objeto sea destruido queda fuera del alcance del programador. PROGRAMACIÓN ORIENTADA A OBJETOS
  43. 43. El Garbage Collector (GC recolector de basura): Se asegura que: • Los objetos son destruidos una sola vez. • Se destruyan objetos que ya no son utilizados. Trabaja cuando: • Hay poca memoria disponible. • La aplicación está finalizando. • El programador lo invoca manualmente (NO recomendado): System.GC.Collect(); PROGRAMACIÓN ORIENTADA A OBJETOS
  44. 44. Práctica: • Utilizando POO diseñe una clase para un rectángulo, añada los métodos necesarios (una método por fórmula) para obtener :  El área: A = a * b  El perímetro: P = 2(a + b)  La diagonal: d = √(a2 - b2)  El radio de la circunferencia circunscrita: R = √(a2 - b2)/2 PROGRAMACIÓN ORIENTADA A OBJETOS
  45. 45. Operadores Relacionales > Mayor que < Menor que >= Mayor o igual que <= Menor o igual que == Igual != Diferente PROGRAMACIÓN ORIENTADA A OBJETOS Operadores Lógicos && AND (Y) || OR (O) ! NOT (NO)
  46. 46. Decisiones (if) if (condicion) { //Qué pasa si la condición es Verdadera } else { //Qué pasa si la condición es Falsa } La Decisión puede ser SIN PARTE FALSA PROGRAMACIÓN ORIENTADA A OBJETOS
  47. 47. Selección Múltiple int variable = 1; switch (variable) { case 1: Console.WriteLine(“1”); break; case 2: Console.WriteLine(“2”); break; case 3: Console.WriteLine(“3”); break; default: Console.WriteLine(“Otro”); break; } PROGRAMACIÓN ORIENTADA A OBJETOS
  48. 48. Ciclo for() { } for (x=inicio; x<=fin ; x=x+incremento ) { //cuerpo del ciclo… } PROGRAMACIÓN ORIENTADA A OBJETOS
  49. 49. Ciclo while { } while ( condicion ) { //cuerpo del ciclo… } PROGRAMACIÓN ORIENTADA A OBJETOS
  50. 50. Ciclo do { } while( ) do { //cuerpo del ciclo… } while ( condicion ); PROGRAMACIÓN ORIENTADA A OBJETOS
  51. 51. Namespace • Organizan los diferentes componentes • Un programa puede contener varios namespaces • Un namespace puede contenermuchas clases • El programador puede crear sus propiosnamespaces • Para accesar a namespaces se usa la directiva using: using System; using System.Array; PROGRAMACIÓN ORIENTADA A OBJETOS
  52. 52. Práctica : • Hacer un programa que capture un base y altura de un triángulo y despliegue un menú básico con las siguientes opciones: 1) Área del Triángulo 2) Perímetro del Triángulo 3) Superficie del Triángulo • Si el número capturado es distinto a los mencionados el programa termina. PROGRAMACIÓN ORIENTADA A OBJETOS
  53. 53. Ejercicios con ciclos y condiciones • Utilizando POO escribe un programa que capture un número en la rutina principal y por medio de un método de la clase calcule la tabla de multiplicar de ese numero desde el 1 hasta el diez. PROGRAMACIÓN ORIENTADA A OBJETOS
  54. 54. Práctica: • Utilizando POO escribe un programa que capture un número en la rutina principal y por medio de un método en clase calcule el factorial de un número entero PROGRAMACIÓN ORIENTADA A OBJETOS
  55. 55. Sobrecarga de métodos • Un método sobrecargado se utiliza para reutilizar el nombre de un método pero con diferentes argumentos (opcionalmente un tipo diferente de retorno). Las reglas para sobrecargar un método son las siguientes: • Los métodos sobrecargados deben de cambiar la lista de argumentos. • Pueden cambiar el tipo de retorno. • Pueden cambiar el modificador de acceso. • Pueden declarar nuevas o más amplias excepciones. • Un método puede ser sobrecargado en la misma clase o en una subclase. PROGRAMACIÓN ORIENTADA A OBJETOS
  56. 56. Ejercicio de sobrecarga • Utilizando POO desarrolla un programa que capture un número en a rutina principal y calcule el valor absoluto del mismo dentro de una clase, este puede ser int, short, o long. • Debes crear un método sobrecargado por cada tipo de dato que regrese el resultado a la rutina principal. PROGRAMACIÓN ORIENTADA A OBJETOS
  57. 57. Práctica de sobrecarga • Escribe un programa que realice la suma de dos números utilizando sobrecarga de la siguiente forma: • Sumar entero y entero: retorna entero; • Sumar flotante y flotante: retorna flotante; • Sumar flotante y entero: retorna flotante; • Sumar entero y flotante: retorna flotante; PROGRAMACIÓN ORIENTADA A OBJETOS
  58. 58. Evidencia de la unidad • Con las técnicas que hemos visto hasta ahora escribe un programa que calcule el impuesto a pagar por importación en una aduana bajo las siguientes condiciones: • El artículo puede ser nuevo o usado. • Los artículos nuevos pagan IEPS que consiste en 10% del valor • Los artículos usados no pagan IEPS • Los artículos que provienen de USA y CAN no pagan Impuesto General a la Importación (IGE) • Los artículos que provienen de cualquier otro país pagan 5% de IGE • Todos los artículos pagan IVA • Al final desplegar el total por impuesto y el total general de impuestos, así como el valor total de las mercancías importadas. PROGRAMACIÓN ORIENTADA A OBJETOS
  59. 59. • Debes realizar tantas clases sean necesarias. • Los atributos locales en las clases deben ser privados. • Debes crear tantos constructores y destructores se requieran. • La clase Program solo puede capturar valores e imprimir resultados pero no realizar cálculos. ¡Muchas suerte! PROGRAMACIÓN ORIENTADA A OBJETOS
  60. 60. Bibliografía • Landa, N. (2010) . C# guía total del programador. RedUsers. Buenos Aires. ISBN 978-987-26013-5-5. • López, B. (2018). Curso de Programación Orientada a Objetos en C#.Net. Disponible en: http://www.itnuevolaredo.edu.mx/takeyas PROGRAMACIÓN ORIENTADA A OBJETOS

×