You are on page 1of 4

Contabilidad (Programacin de Computadoras II) UNIDAD 3 POLIMORFISMO 3.

1 Polimorfismo

TIC

La palabra polimorfismo significa mltiples formas, por lo tanto, podramos definir en el mbito de programacin que el polimorfismo es la capacidad de poder enviar un mismo mensaje a objetos totalmente diferentes, y que cada uno de estos objetos responda de manera diferente. Pongamos por ejemplo las clases hombre, vaca y perro, si a todos les damos la orden Come, cada uno de ellos sabe cmo hacerlo y realizar este comportamiento a su modo. Veamos otro ejemplo. Tomemos las clases barco, avin y coche, todas ellas derivadas de la clase padre vehculo; si les enviamos el mensaje Desplzate, cada una de ellas sabe cmo hacerlo. Realmente, y para ser exactos, los mensaje no se envan a las clases, sino a todos o algunos de los objetos instanciados de las clases. En programacin tradicional, debemos crear un nombre distinto para la accin de pintarse, si se trata de un texto o de un marco; en OOP el mismo nombre nos sirve para todas las clases creadas si as lo queremos, lo que suele ser habitual. El mismo nombre suele usarse para realizar acciones similares en clases diferentes. Si enviamos el mensaje Imprmete a objetos de distintas clases, cada uno se imprimir como le corresponda, ya que todos saben cmo hacerlo. El polimorfismo nos facilita el trabajo, ya que gracias a l, el nmero de nombres de mtodos que tenemos que recordar disminuye considerablemente. La mayor ventaja la obtendremos en mtodos con igual nombre aplicados a las clases que se encuentran prximas a la raz del rbol de clases, ya que estos mtodos afectarn a todas las clases que de ellas se deriven. A continuacin se muestra un ejemplo en el que se define una clase polgono; se crean dos clases derivadas cuadrilatero y triangulo. Para cada clase derivada se define un mtodo area() con el cual se aprecia el polimorfismo. //clase base class poligon { private string nombre; private int numeroDeLados; public poligon(string name, int nlados) { nombre = name; numeroDeLados = nlados; } public virtual double area() {

Contabilidad (Programacin de Computadoras II) return 0; } public string Nombre { get { return nombre; } } } //clase derivada class triangulo: poligon { private double alt, bas; public triangulo(string name, int nlados, double h, double b) : base(name, nlados) { alt = h; bas = b; } public override double area() { double a; a = (bas * alt) / 2; return a; } } //clase derivada class cuadrilatero: poligon { private double lado; public cuadrilatero(string name, int nlados, double l) : base(name, nlados) { lado = l; } public override double area() { double a; a = lado * lado; return a; } } }

TIC

La propuesta de la interfase es la siguiente:

Contabilidad (Programacin de Computadoras II)

TIC

Cdigo del formulario:

public partial class Form1 : Form { int n; public Form1() { InitializeComponent(); } private void button1_Click(object sender, EventArgs e) { string nam; double bas, al, lad; if (n == 3) { nam = textBox5.Text; bas = Convert.ToDouble(textBox2.Text);

Contabilidad (Programacin de Computadoras II) al = Convert.ToDouble(textBox3.Text); poligon p = new triangulo(nam, n, al, bas); label1.Text = p.Nombre; label2.Text = "Area: " + p.area(); } if (n == 4) { nam = textBox6.Text; lad = Convert.ToDouble(textBox4.Text); poligon p = new cuadrilatero(nam, n, lad); label1.Text = p.Nombre; label2.Text = "Area: " + p.area(); } } private void Form1_Load(object sender, EventArgs e) { panel1.Enabled = false; panel2.Enabled = false; panel3.Enabled = false; comboBox1.Items.Add(3); comboBox1.Items.Add(4); } private void comboBox1_SelectedIndexChanged(object sender, EventArgs e) { n =Convert.ToInt16(comboBox1.SelectedItem.ToString()); if (n==3) panel1.Enabled = true; else panel1.Enabled = false; if (n == 4) panel2.Enabled = true; else panel2.Enabled = false; panel3.Enabled = true; } }

TIC

You might also like