Guia-5 Clases
Guia-5 Clases
Guia-5 Clases
Objetivo General:
Objetivos Específicos:
• Mostrar y Aplicar los conceptos relativos a las clases de POO.
• Solucionar problemas haciendo uso de clases.
• Crear clases en C#
• Aplicar la programación orientada a objetos.
• Mostrar el uso del Data Grid View
• Mostrar el uso del for each con objetos
Introducción:
La programación Orientada a objetos es un paradigma de programación, en el que se organiza
el código en elementos llamados clases, de las cuales se crean objetos que se relacionan
entre sí para conseguir los objetivos de las aplicaciones.
Esta Guía consta de dos partes. En la primera parte, se presentan definiciones y ejemplos de
los tópicos a tratar sobre POO con sus respectivos ejemplos aplicados; en la segunda parte,
se exponen algunos Ejercicios Propuestos utilizando clases para practicar los conocimientos
adquiridos.
Metodología:
Esta Guía está diseñada para que los alumnos, antes de la sesión de laboratorio, desarrollen
los ejemplos propuestos en la Parte I. Luego, en la Sesión de Laboratorio, el docente explique
la temática, resuelva dudas e indique a los estudiantes que realicen tres ejercicios de la Parte
II.
Para tener un mejor panorama de la POO remítase a la unidad 02 del curso de Programación
I publicada en aula virtual.
Clase
En programación orientada a objetos una clase es una representación de una entidad en la
vida real, la cual se trata de describir a través de sus cualidades y acciones (atributos y
métodos).
1
Para crear una clase automóvil, como atributos se podrían definir la placa, la marca, el color,
cantidad de llantas, motor, y otros: y como acciones (métodos): arrancar, acelerar y apagarse.
1 Nombre de la Clase
2 Atributos
3 Métodos
Clases en C#
Pasos para creación de clases en C#:
Una vez se cree el proyecto, lleve su cursor a la barra “explorador de soluciones”
(si no ve esta pestaña, dirigirse a la opción ver dentro de visual y seleccionar explorador de
soluciones)
2
Una vez su cursor se encuentre aquí, haga clic
derecho sobre cualquier espacio vacío, o sobre
el nombre del proyecto, se abrirá un menú
desplegable. Seleccione la opción Agregar.
3
en el segundo menú, seleccione Clase.
Esto abrirá un cuadro con varias opciones donde debe seleccionar crear, ahora escribir el
nombre de la clase a crear y presionar Agregar.
Nombre de la Clase
click
4
Esto generará una clase pre hecha para usar como se ve en la siguiente imagen. Se puede
generar clases de varias formas, esta es una de las más intuitivas y rápidas.
5
Observe una forma diferente de hacer los métodos set y get.
6
1. Para darle a entender a C# que queremos crear una clase, debemos usar la palabra
reservada “class” seguida de el nombre que le daremos a la clase, en este caso
“Automovil”.
2. Para asignar los atributos o miembros a la clase basta con declarar variables con el
nombre de cada atributo, generalmente los atributos se agrega la palabra reservada
de acceso private (se verá con más detenimiento en la siguiente guía), que sirve para
evitar que código externo modifique nuestros atributos de una forma que no
queremos.
4. Estos fragmentos de código son llamados getters y setters, son usados para
manipular la forma en la que se guarda y se entregan los atributos de la clase, en
estos se puede modificar la información antes de guardarla y antes de enviarla.
EL método set sirve para asignar un valor al atributo. El método get sirve para obtener
el valor asignado al atributo.
Tipos de Accesos
Palabra reservada private y public
Dentro de las palabras reservadas que tiene C# se encuentran algunas que modifican el
acceso al código, desde otras partes. Son útiles para evitar modificaciones por error o para
evitar llamar propiedades o métodos que no queremos que sean llamadas por otra clase.
Puede que se esté trabajando en equipo cuando las pesonas no conocen la estructura del
código ajeno y se quiere evitar modifcaciones o usos para los que no fue hecho lo que
hayamos declarado.
7
public: Este acceso permite que el atributo o él método de tipo público pueda ser llamado
desde cualquier lugar y por cualquier clase que tenga una instancia de la clase donde se ha
declarado.
}
8
}
Intencionalmente no se han programado los métodos set y get para demostrar que no es
necesario tenerlos cuando los miembros son public
En la forma tenemos:
namespace Ejemplos_de_Accesos
{
public partial class frmAccesos : Form
{
Acceso pruebaDeAcceso = new Acceso();
//se instancia un objeto de tipo Acceso para poder invocarlo a el y
a sus métodos
public frmAccesos()
{
InitializeComponent();
}
pruebaDeAcceso.prod = 5;
lblVarPrivada.Text = Convert.ToString(pruebaDeAcceso.prod);
*/
Ejecución
9
Al probar las líneas de código que están en comentario se obtendrán errores ya que no se
puede acceder directamente al miembro por ser privado, para solucionar este problema
habrá que programar los métodos set y get de tipo public
Recuerde que la recomendación es que los atributos de una clase deben ser privados
y sus métodos públicos.
10
El cuadro celeste es un objeto Data Grid View muy útil para mostrar listas de elementos.
Ahora se creará a clase animal para poder registrar y buscar animales en el zoológico, tendrá la
siguiente estructura:
Archivo: Animal.cs
namespace ZOO
{
class Animal
{
private string nombre;
private string familia;
private string clase;
private int cantidad;
public Animal() { }
public Animal(string nombre, string familia, string clase, int
cantidad)
{
11
this.nombre = nombre;
this.familia = familia;
this.clase = clase;
this.cantidad = cantidad;
}
Archivo: Form1.cs
namespace ZOO
{
public partial class frmzoo : Form
{
public frmzoo()
{
InitializeComponent();
}
12
//creamos una lista de animales para guardar los que se vayan
creando
private List<Animal> animales = new List<Animal>();
private int indice_edit = -1; //indice para hacer referencia al
animal que se toca en el datagridview
private void limpiar() // método para limpiar los textbox una vez
se guarde
{
txtNombre.Clear();
txtFamilia.Clear();
txtClase.Clear();
txtCant.Clear();
}
private void btnGuardar_Click(object sender, EventArgs e) //método
para guardar los animales
{ //creamos el animal
Animal animal = new Animal();
//le damos sus caracteristicas según lo ingresado por el
usuario
animal.Nombre = txtNombre.Text;
animal.Familia = txtFamilia.Text;
animal.Clase = txtClase.Text;
animal.Cantidad = int.Parse(txtCant.Text); //los atributos
.text siempre vienen en string, como nuestra cantidad es int debemos
pasarlo a int
//si ya hay animales guardados lo posicionamos en el indice que
queremos
if (indice_edit > -1)
{
animales[indice_edit] = animal;
indice_edit = -1;
}
else
{
animales.Add(animal); //sino solo lo guardamos
}
actualizar();
limpiar();
}
private void actualizar() //método para actualizar la información
mostrada en el datagrid
{
dtGAnimales.DataSource = null;
dtGAnimales.DataSource = animales;
}
13
private void btnBuscar_Click(object sender, EventArgs e) //método
para calcular la cantidad de veces que aparece una clase en la lista de
animales
{
List<Animal> animalesPorClase= new List<Animal>(); //creamos
una lista de animales especificos
int i = 0; //contador para saber cuantas veces aparece la clase
seleccionada
foreach (Animal ani in animales) //un ciclo para recorrer todo
la lista, se puede hacer también con un for
{
if (ani.Clase ==txtResultado.Text) //si el animal que se
está iterando tiene la misma clase que se está buscando, la guardamos en
nuestra nueva lista
{
i +=ani.Cantidad; // agregamos la cantidad de animales
al contador
animalesPorClase.Add(ani);
}
}
//actualizamos la tabla
dtGAnimales.DataSource = null;
dtGAnimales.DataSource = animalesPorClase;
//agregamos el resultado a una label
lblResultado.Text = i.ToString();
14
}
}
Ejecución:
Ingresar datos y Guardar
Guardamos unos cuantos animales más, observe el uso del Data Grid View
15
Podemos editar al hacer doble click sobre alguna celda y con lo que aparece la información
en los respectivos text box y allí podemos editar y guardar el mismo dato nuevamente.
16
Observe que al dar doble click aparece
la información en los text boxes
17
Y por último se pueden buscar por clase los animales del zoológico y conocer la cantidad de
animales por clase a la que pertenece.
Si buscamos Mamifero:
Ejecute los siguientes ejercicios con Clases en Windows Forms. Algunos se han retomado de
guías anteriores pero ahora deben solucionarse con POO y PO a Eventos.
2. .La Cátedra de Matemática IV desea realizar un Concurso, para el cual necesita saber
las mejores notas obtenidas en el parcial final. Diseñe y codifique un programa con
formularios en donde se ingrese el nombre del estudiante y su nota obtenida en el
18
mencionado parcial, si el estudiante tiene nota mayor a 8, se debe mostrar en la
pantalla que ha sido seleccionado para participar en el Concurso
a) Si los tres dados son seis, mostrar el mensaje “¡¡¡ Ganó 1,000,000 !!!”
5. Crear un programa que permita guardar materias (nombre, ciclo, código materia) y permita
consultarlas según su nombre
7. Diseñe y codifique un programa que registre 5 jugadores de futbol con los siguientes datos:
nombre del jugador, nombre del equipo, cantidad de goles, cantidad de asistencias. Y se
pide que calcule:
El jugador con la mayor cantidad de goles anotados, su nombre y el nombre del
equipo.
El jugador con la mayor cantidad de asistencias, su nombre y nombre del equipo.
El nombre del jugador con menos goles anotados y la cantidad de goles que tiene
de diferencia con el máximo goleador.
Para facilitar la solución puede ocupar un DatagridView
8. Academia “English 4All” tiene una nómina de docentes, cada uno tiene una cantidad de
estudiantes. Los estudiantes escogen a los docentes según su apreciación de quién es
el mejor. Buscar al docente que más estudiantes tiene. Listar los 3 mejores docentes
para otorgar un reconocimiento.
19
9. Crear una clase Receta que sea capaz de según los síntomas que se ingrese, diagnosticar
una receta médica:
10. Rent-a-Movie desea un sistema donde pueda tener 3 películas, con sus nombres, enlaces
a trailers, cantidad, género y año de exhibición. Haga un programa que permita que los
usuarios puedan seleccionar la o las películas a alquilar y mostrar las seleccionadas.
20