Location via proxy:   [ UP ]  
[Report a bug]   [Manage cookies]                

Guia-5 Clases

Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 20

UNIVERSIDAD DE EL SALVADOR

FACULTAD DE INGENIERIA Y ARQUITECTURA


ESCUELA DE INGENIERIA DE SISTEMAS INFORMATICOS
PROGRAMACION I – Ciclo II 2021
GUIA 5: Programación Orientada a Objetos. Clases.

Objetivo General:

Dar a Conocer conceptos relacionados con Clases en la Programación Orientada a Objetos


(POO). E implementarlos en C# usando Windows Forms para resolución de problemas.

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.

Parte I. Conceptos relacionados en POO

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

La imagen anterior es una clase diseñada en draw.io


Objetos
De cada clase pueden generarse muchos objetos, todos poseerán los mismos atributos y
métodos de la clase de la que se instancian aunque no todos los atributos tendrán los mismos
valores
En el ejemplo del automóvil uno puede ser de marca Kia color blanco motor 2.0 y otro objeto
puede ser marca Toyota color azul motor 2.4, etc. pero ambos pueden instanciarse de la misma
clase y tendrán los mismos métodos.
Un Objeto es una instancia de una clase, con valores propios en sus atributos

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.

3. Constructor: Un constructor es un método especial que utilizan las clases para


instanciarse, debe llevar el mismo nombre de la clase a la que hace referencia y
puede tener diferente cantidad de argumentos, según los necesitemos, en el ejemplo
de la imagen, tenemos un constructor con todos los atributos que contiene el
Automóvil, cuando se use este constructor para crear un objeto Automóvil se tendrán
que agregar todos los parámetros al momento de crearlo, arriba de él, hay un
constructor vacío, este nos permite crear objetos del tipo automóvil sin necesidad de
definir sus atributos cuando se cree.

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.

Palabra reservada This


La palabra reservada this es en muchos lenguajes una forma de hacer referencia a la clase o
entorno en el que se encuentra en lugar de algún parámetro que tenga el mismo nombre, así
en el constructor del ejemplo se tiene el parámetro placa el cual será asignado al atributo de
clase Automóvil que también se llama placa, para asegurarse que el parámetro sea asignado
al atributo Automóvil agregamos la palabra this seguida de un punto y el nombre del 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.

private: Este acceso restringe el acceso a únicamente a la clase que lo contiene, no


podremos hacer uso del código con private en ningún lugar fuera de la clase, aunque se
haga instancia de ella, cuando se hace herencia las clases hijas, reciben los atributos
privados.
Ejemplo de Accesos:
Considere el siguiente ejemplo para demostrar el tipo de acceso de public o private de los
atributos

Creamos la clase Ejemplos de Accesos:


namespace Ejemplos_de_Accesos
{
class Acceso
{
public int suma;
private int prod;

public void Sumar(int a, int b)


{
suma = a + b;
}
public void Multiplicar(int a, int b)
{
prod = a * b;
}

}
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();
}

private void btnMostrar_Click(object sender, EventArgs e)


{
pruebaDeAcceso.Sumar(9, 7);
//invoca método público enviando los parámetros directamente
pruebaDeAcceso.Multiplicar(4, 3);
//invoca método público enviando los parámetros directamente
lblVarPublica.Text = Convert.ToString(pruebaDeAcceso.suma);
//muestra el valor de suma
pruebaDeAcceso.suma = 5;
//accede a la variable publica sin necesidad de un método get
lblPrueba2.Text = Convert.ToString(pruebaDeAcceso.suma);
//permite modificar directamente el valor del miembro suma

/*observe lo que sucede tratando de hacer lo mismo con el


miembro privado:

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.

Ejemplo uso de clases en C#


Realizar un programa que permita guardar los diferentes animales de un zoológico, con sus
propiedades, tales como (nombre, familia, clase, cantidad en el zoológico), mostrarlos todos
en una tabla, se podrá editar cada uno de los ya existentes y además, dar la opción de calcular
la cantidad de animales diferentes que existen según la clase que se especifique.

Estos serán los componentes que usará nuestro formulario

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;
}

public string Nombre


{
get { return nombre; }

set { nombre = value; }


}

public string Familia


{
get { return familia; }

set { familia = value; }


}

public string Clase


{
get { return clase; }

set { clase = value; }


}
public int Cantidad
{
get { return cantidad; }

set { cantidad = value; }


}
}
}

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();

private void dganimales_doubleClick(object sender, EventArgs e)


//método para editar un objeto de la datagrid
{
//seleccionamos el indice
DataGridViewRow seleccion = dtGAnimales.SelectedRows[0];
int index = dtGAnimales.Rows.IndexOf(seleccion);
indice_edit = index;
//buscamos al animal en la lista por su indice y lo guardamos
Animal animal = animales[index];
//llenamos los textbox con su información
txtNombre.Text = animal.Nombre;
txtFamilia.Text = animal.Familia;
txtClase.Text = animal.Clase;
txtCant.Text = animal.Cantidad.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:

Muestra todos los animales mamiferos y el total por clase

Parte II. Ejercicios Propuestos De POO

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.

1. El ministerio de Hacienda desea registrar los tipos de impuestos que se generan de


diferentes rubros, para lo cual se necesita registrar el nombre el impuesto, la tasa de
impuesto, y sobre que bienes o servicios se aplica. Realice un programa para mostrar los
registros y buscar los impuestos por nombre

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

3. En un casino de juegos se desea mostrar los siguientes mensajes, según el puntaje


obtenido en el lanzamiento de tres dados de un cliente, de acuerdo a los siguientes
resultados:

a) Si los tres dados son seis, mostrar el mensaje “¡¡¡ Ganó 1,000,000 !!!”

b) Si en dos dados se obtiene seis, mostrar el mensaje “¡Ganó TV!”

c) Si solamente en un dado se obtiene seis, mostrar el mensaje “Continúe intentando”

d) Si en ningún dado se obtiene seis, mostrar el mensaje “¡¡¡Pierde todo!!!


Puede utilizar una función random o randomize para calcular los valores
aleatoriamente

4. Diseñe un programa que calcule el área de un triángulo, dado su altura y base.

5. Crear un programa que permita guardar materias (nombre, ciclo, código materia) y permita
consultarlas según su nombre

6. Crear un programa que pueda calcular el salario de un empleado según la cantidad de


ventas que ha hecho al mes.
• Si son menos de 10, el salario final será 110% del salario original
• Si son entre 10 y 20, el salario final será de 125% del salario original.
• Si es 20 o más de 400 dólares.
Guarde los datos del empleado y al registrarlo, imprima el nombre, apellido, edad, DUI y su
respectivo sueldo según las ventas que haya realizado
Al final todos los datos de los empleados deben verse reflejados en pantalla

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:

a. Si es “tos”, diagnosticar “tomar pastilla A”


b. Si es “dolor de cabeza” diagnosticar “tomar pastilla B”
c. Si es “fiebre” diagnosticar “tomar pastilla A y pastilla B”
Agregara a la receta el nombre del doctor, apellido y hospital al que trabaja.

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

También podría gustarte