ICIN 051 Programación de Computadores Semestre 01/2006 Oscar Mapocho Salazar Cerna
[email protected]
Clase 10: Clases y Objetos
Instituto de Computación - Universidad Austral de Chile - Campus Puerto Montt
¿Qué es una clase?
Conjunto de individuos que tienen una propiedad común que les diferencia de todos los demás Los “individuos” pertenecen o no pertenecen a la clase Es una representación abstracta de un objeto ¿Qué?
Material para módulo “ICIN 051 – Programación de Computadores” Departamento de Ingeniería Industrial - Universidad Austral de Chile – Campus Puerto Montt
Más “sencillo”
Una clase es un contenedor De uno o más datos (variables o propiedades miembro) Junto a las operaciones de manipulación de dichos datos (funciones/métodos)
Material para módulo “ICIN 051 – Programación de Computadores” Departamento de Ingeniería Industrial - Universidad Austral de Chile – Campus Puerto Montt
¿Cómo se define una clase? class Nombre { // Variables miembro (habitualmente privadas) miembro_1; //lista de miembros miembro_2; miembro_3; // Funciones o métodos (habitualmente públicas) funcion_miembro_1( ); funcion_miembro_2 ( );
}
Material para módulo “ICIN 051 – Programación de Computadores” Departamento de Ingeniería Industrial - Universidad Austral de Chile – Campus Puerto Montt
¿Y de qué se componen?
Atributos o variables de instancia
Son características de los objetos Se debe especificar si nombre y su tipo Pueden ser:
Públicas: Todos pueden acceder a ellas Privadas: Sólo dentro de la clase se puede acceder a ella
Material para módulo “ICIN 051 – Programación de Computadores” Departamento de Ingeniería Industrial - Universidad Austral de Chile – Campus Puerto Montt
¿Y de qué se componen?
Métodos en las clases (funciones o procedimientos)
Implementan la funcionalidad asociada al objeto Son el equivalente a las funciones en los lenguajes estructurados Se diferencian de ellos en que es posible acceder a las variables de la clase de forma implícita
Cuando se desea realizar una acción sobre un objeto, se dice que se le manda un mensaje invocando a un método que realizará la acción Habitualmente, los métodos suelen ser verbos
Material para módulo “ICIN 051 – Programación de Computadores” Departamento de Ingeniería Industrial - Universidad Austral de Chile – Campus Puerto Montt
Ejemplos class Casa { decimal Altura; decimal Ancho; decimal Profundidad; string Color; void Entrar(); void Salir(); } Material para módulo “ICIN 051 – Programación de Computadores” Departamento de Ingeniería Industrial - Universidad Austral de Chile – Campus Puerto Montt
Ejemplos class Punto { float x, y; void Set(); float GetX(); float GetY(); float GetRadio(); }
Material para módulo “ICIN 051 – Programación de Computadores” Departamento de Ingeniería Industrial - Universidad Austral de Chile – Campus Puerto Montt
Ejemplos class Cuadrado { Punto p1, p2; void Set(); float GetP1(); float GetP2(); float GetArea(); }
Material para módulo “ICIN 051 – Programación de Computadores” Departamento de Ingeniería Industrial - Universidad Austral de Chile – Campus Puerto Montt
Ejemplos class Circulo { Punto p; float radio; void Set(); float GetPunto(); float GetArea(); }
Material para módulo “ICIN 051 – Programación de Computadores” Departamento de Ingeniería Industrial - Universidad Austral de Chile – Campus Puerto Montt
¿Qué son los objetos?
Instancias de clases ¿Qué? Son variables que tienen como tipo alguna clase Se declaran igual que las variables:
nombre_clase nombre_objeto;
Se instancian:
nombre_objeto= new nombre_clase();
Material para módulo “ICIN 051 – Programación de Computadores” Departamento de Ingeniería Industrial - Universidad Austral de Chile – Campus Puerto Montt
Ejemplos using System; using System.Collections.Generic; using clases_utiles; namespace ejemplos_clases { class MainClass { public static void Main(string[] args) { Punto mi_punto; // Declaro mi objeto mi_punto= new Punto( 3, 4); // Lo instancio } } } Material para módulo “ICIN 051 – Programación de Computadores” Departamento de Ingeniería Industrial - Universidad Austral de Chile – Campus Puerto Montt
Métodos
Trozos de código que se pueden llamar muchas veces Devuelven algo (de algún tipo) Reciben parámetros Dividir para reinar Sintaxis:
tipo_datos nombre_metodo (parametros …)
Concepto de firma
Material para módulo “ICIN 051 – Programación de Computadores” Departamento de Ingeniería Industrial - Universidad Austral de Chile – Campus Puerto Montt
Métodos
Devuelven algo
Nada: void Un tipo de datos conocido Una clase
Hay una clase que debe existir siempre para programas:
MainClass Y debe tener siempre el método:
public static void Main(string[] args)
Material para módulo “ICIN 051 – Programación de Computadores” Departamento de Ingeniería Industrial - Universidad Austral de Chile – Campus Puerto Montt
Ejemplos public class Punto { public double x, y; public void Set(double variable_x, double variable_y) { this.x= variable_x; this.y= variable_y; } public double Pitagoras() { return( Math.Sqrt(Math.Pow(this.x,2) + Math.Pow(this.y,2)); } }
Material para módulo “ICIN 051 – Programación de Computadores” Departamento de Ingeniería Industrial - Universidad Austral de Chile – Campus Puerto Montt
Ejercicios
Construir una clase que provea un mecanismo para manejar un rectángulo, además de las herramientas para poder calcular:
El perímetro El área Ver si un punto está en su interior
Material para módulo “ICIN 051 – Programación de Computadores” Departamento de Ingeniería Industrial - Universidad Austral de Chile – Campus Puerto Montt
Privacidad en las Clases
Una variable o método, que pertenece a una clase, puede ser:
Privado (private): Sólo pueden acceder a él los métodos de la misma clase Público (public): Pueden acceder a él todos los métodos externos a la clase original Protegido (protected): Pueden acceder a él los métodos de “clases hijas”
Material para módulo “ICIN 051 – Programación de Computadores” Departamento de Ingeniería Industrial - Universidad Austral de Chile – Campus Puerto Montt
Ejercicio Números Complejos
Proveer una clase para manejar números complejos definidos como a+bi Métodos:
Set Imprimir Sumar
Se obtiene sumando respectivamente las partes reales e imaginarias de los complejos dados.
Multiplicar
El resultado es otro complejo que se obtiene multiplicando cada una de las partes de uno de los complejos por las otras partes del otro complejo recordando que i2 = -1
Material para módulo “ICIN 051 – Programación de Computadores” Departamento de Ingeniería Industrial - Universidad Austral de Chile – Campus Puerto Montt
Ejercicios Fecha Chilena
Proveer una clase que permita implementar una fecha en formato chileno: dd/mm/aaaa Métodos:
Set Imprimir( formato) SumarDias( dias) EsMenor( fecha) EsMenorIgual (fecha) DiaDeLaSemana()
Material para módulo “ICIN 051 – Programación de Computadores” Departamento de Ingeniería Industrial - Universidad Austral de Chile – Campus Puerto Montt
Ejercicios Hora
Proveer una clase que permita implementar una hora: hh:mm:ss Métodos:
Set Imprimir( formato) Decimal() SumarHoras( horas) EsMenor( hora) EsMenorIgual ( hora)
Material para módulo “ICIN 051 – Programación de Computadores” Departamento de Ingeniería Industrial - Universidad Austral de Chile – Campus Puerto Montt
Ejercicios Graficar Polinomios
Proveer una clase que permita graficar polinomios Métodos:
SetGrado(n) SetCoeficiente(i) GetF(x) GraficarF(x1, x2) Imprimir()
Material para módulo “ICIN 051 – Programación de Computadores” Departamento de Ingeniería Industrial - Universidad Austral de Chile – Campus Puerto Montt
Ejercicios El Gato
Proveer una clase que permita jugar Gato entre 2 jugadores Métodos:
Vaciar JugarEn AlguienGano
Material para módulo “ICIN 051 – Programación de Computadores” Departamento de Ingeniería Industrial - Universidad Austral de Chile – Campus Puerto Montt
Ejercicios El Banco
Proveer una clase que permita manejar una cuenta corriente (simple) de un banco. Usar otra clase: Movimiento Métodos:
Set Abonar Retirar
Material para módulo “ICIN 051 – Programación de Computadores” Departamento de Ingeniería Industrial - Universidad Austral de Chile – Campus Puerto Montt