Programación II. Guía No. 5 1 Facultad: Ingeniería Escuela: Computación Asignatura: Programación II Tema: Clases y Objetos en C#. Parte II. Objetivos Implementar clases, objetos, propiedades, métodos y mensajes. Crear, analizar y comprender cuando utilizar las clases. Crear constructores de clases. Materiales y Equipo Computadora con el software Visual Studio 2013. Guía Número 5. Introducción Teórica En esta práctica se tratarán los niveles de acceso y constructores para la definición de clases y creación de objetos. Los métodos constructor y destructor. El método constructor es un método muy diferente de todos los demás. En primer lugar, su nombre coincide siempre con el de la clase a la que pertenece, se ejecuta automáticamente al declarar un objeto como instancia de una clase; se escribe generalmente en la sección pública de una clase, y su función es crear e iniciar un objeto del tipo de la clase en la cual fue definido. De esta manera, los constructores permiten asegurar que los objetos, al crearse, se inicialicen con valores válidos. Además, un constructor no es ni un procedimiento ni una función, y por lo tanto no tiene asociado ningún tipo de retorno (ni siquiera void). Por último, el usuario nunca invoca un constructor de manera explícita. Esto no tendría sentido, pues de lo que se trata es de que los objetos sean inicializados de manera implícita por C#, sin intervención alguna por parte del usuario. Por ello, el constructor de una clase es invocado automáticamente justo después de cada declaración de un objeto de esa clase. 2 Programación II. Guía No.5 Sintaxis para la definición del método constructor: <nombre de clase> (<listado de parámetros>) { cuerpo del constructor } ó <nombre de clase> ( ) { } El método destructor es una función que se ejecuta automáticamente al destruirse un objeto. Lleva el mismo nombre de la clase, va precedido por el símbolo “~” y no lleva argumentos. Un objeto se destruye al terminar el programa en el cual se creó y libera el espacio de memoria. El usuario nunca debe ejecutar un destructor de forma explícita. Los destructores son invocados automáticamente por C# a través del Garbage Collector cada vez que considera que un objeto debe dejar de existir. POR ELLO NO LO MODIFICAREMOS DENTRO DEL CÓDIGO DE NUESTRO PROGRAMA. Sintaxis para la definición del método destructor: ~ <nombre de clase> ( ) { } Uso de constructores múltiples. C++ utiliza las capacidades de sobrecarga de funciones para que una clase tenga varios constructores. Los constructores múltiples hacen referencia a que en una misma clase se puede incluir más de un constructor. Esto permite dar mayor flexibilidad a la declaración de la clase. Existen tres tipos de constructores: Constructor por omisión: es aquel que no tiene parámetros y su cuerpo no contiene instrucciones. Cuando se crea un objeto, si éste es global, el constructor inicializa con cero aquellos atributos que son numéricos y con NULL a los que son alfabéticos. Si el objeto creado es local, entonces los atributos se inicializan en valores determinados. Programación II. Guía No.5 3 Constructor con parámetros: es aquel que tiene una lista de parámetros, a los cuales habrá que darles un valor en el momento de declarar un objeto. Dichos valores se usarán para instanciar los atributos del objeto creado. Constructor con parámetros por omisión: es aquel que tiene una lista de parámetros, a los cuales se les asigna un valor por omisión que se usará para inicializar en caso de que no se den explícitamente otros valores. Se llama constructor de oficio o por defecto al constructor que define automáticamente el compilador si el usuario no define ningún constructor. Si bien todo constructor de oficio es constructor por defecto (ya que no tiene argumentos), lo contrario no es cierto: el programador puede definir constructores por defecto que no son de oficio. Importante: el compilador sólo crea un constructor de oficio en el caso de que el programador no haya definido ningún constructor. En caso de que sólo se haya definido un constructor con argumentos y se necesite un constructor por defecto para crear, por ejemplo un vector de objetos, el compilador no crea este constructor por defecto sino que da un mensaje de error. Procedimiento Ejemplo No. 1: Bibliografía En el siguiente programa vamos a implementar dos constructores diferentes y diferentes formas de darle Guía 1 valores. El problema trata sobre una persona, la cual tiene un nombre, una edad, un peso y también cursa materias con sus respectivas notas. El usuario definirá cual es la nota mínima para aprobar y saber cuál es el rendimiento del alumno, en base a sus calificaciones. Dentro de la solución del proyecto tendremos definidas dos clases (además de la principal); la clase Persona y la clase Materia, las cuales añadiremos como hemos visto en la guía anterior. NOTA: El proyecto podrá ser nombrado como usted elija. 4 Programación II. Guía No.5 Clase Materia Clase Persona Programación II. Guía No.5 Clase Program (clase principal) 5 6 Programación II. Guía No.5 Análisis de Resultados Ejercicio No.1: a) Modificar el programa anterior de forma que el usuario pueda ingresar de forma manual las notas del alumno por asignatura (Materia). b) Se le pide modificar el programa del ejemplo para que puedan ingresarse los datos de la clase Materia (nombre de la materia, cantidad de horas a la semana y también en nombre del profesor) Hacer uso de lo investigado en la tarea complementaria de la guía anterior. c) Cuando se muestren los datos de la Persona en pantalla adicional a la edad y el peso deberá mostrar las notas y también los datos de la materia (modifique o añada constructores de ser necesario, también puede agregar propiedades). Investigación Complementaria Tarea No.1:3 Guía Crear un programa que a través de un menú permita realizar las siguientes funciones: Guía 4 objetos de tipo triángulo. Deberá solicitarse al usuario que tipo de triángulo se a) Crear desea crear: Equilátero, Isósceles o Escaleno. (Es decir que debe crearse una clase de fía Programación II. Guía No.5 7 tal manera que los objetos posean base y altura y los valores de los tres lados del triángulo). b) En cualquier momento modificar los atributos de los objetos. c) Calcular el área de un objeto en particular, de dos maneras (por medio de los lados o por medio de la base y la altura; considerar que según el tipo de triángulo, existe una fórmula para calcular su área). d) Calcular el perímetro de un objeto en particular (considerar que según el tipo de triángulo, existe una fórmula para calcularlo). e) Salir del programa. Tarea N° 2: Investigue en qué consiste y en qué casos puede utilizarse la Liberación explícita de recursos. Demuestre con un caso práctico.