Encabezado • Cuerpo de la clase Encabezado: [modificadores] class identificador [:base]

49  28  Descargar (0)

Texto completo

(1)

OBJETIVOS

• Consolidar los conceptos de la Herencia y

la Composición en las clases.

• Diseñar una jerarquía básica de clases

base, derivadas y compuestas.

(2)

Forma general de Declaración de una clase:

• Encabezado

• Cuerpo de la clase

Encabezado:

[modificadores] class identificador [:base]

(3)

CLASES

Los Campos de una clase pueden ser de cualquier tipo de dato definido.

Un tipo de dato puede ser primitivo, o

(4)

CLASES

Cuando se define una clase, también se define un tipo de dato.

Un tipo de dato puede ser definido por el

programador, como por ejemplo: Punto, Linea, Circulo, Rectangulo, Carro,

(5)

Diseño de la clase base llamada “Punto”:

Sea la clase base “Punto” declarada para representar un punto en un plano Cartesiano conformada por:

• Dos valores correspondientes a las coordenadas x e y. • El método constructor con varias formas.

• Métodos para mover el punto en las 4 direcciones: Arriba, abajo, izquierda y derecha.

• Propiedades para manejar sus campos x e y.

(6)

Diseño de la clase base llamada “Punto”:

public class Punto

{ // declaración de campos de la clase

int x; // declara campo x

int y; // declara campo y

LA COMPOSICIÓN EN LAS CLASES

Declaración de campos de

(7)

Diseño de la clase base llamada “Punto”:

// declaración de métodos de la clase //

// CONSTRUCTOR SIN PARÁMETROS //

public Punto ( ) {

x = 320; // se asigna 320 a la coordenada en x

y = 240; // se asigna 240 a la coordenada en y

}

LA COMPOSICIÓN EN LAS CLASES

Constructor sin

(8)

Diseño de la clase base llamada “Punto”:

//

// CONSTRUCTOR CON UN PARÁMETRO //

public Punto (int xInicial) {

x = xInicial; // x toma valor del parámetro

y = 240; // asigna 240 a la coordenada en y

}

LA COMPOSICIÓN EN LAS CLASES

Constructor con un

parámetro.

(9)

Diseño de la clase base llamada “Punto”:

//

// CONSTRUCTOR CON DOS PARÁMETROS //

public Punto (int xInicial, int yInicial) {

x = xInicial; // x toma valor de un parámetro

y = yInicial; // y toma valor del otro parámetro

}

LA COMPOSICIÓN EN LAS CLASES

Constructor con 2

(10)

Diseño de la clase base llamada “Punto”:

//

// Declaración de métodos para mover un objeto de Punto //

public virtual void MoverDerecha ( )

{x = x + 1; } // mueve el punto una unidad a la derecha

public virtual void MoverDerecha (int nroUnidades )

{x = x + nroUnidades ; } // mueve el punto a la derecha

LA COMPOSICIÓN EN LAS CLASES

Métodos para mover un punto en el

(11)

Diseño de la clase base llamada “Punto”:

//

// Declaración de métodos para mover un objeto de Punto //

public virtual void MoverIzquierda ( )

{x = x - 1; } // mueve el punto una unidad a la izquierda

public virtual void MoverIzquierda (int nroUnidades )

{x = x - nroUnidades ; } // mueve el punto a la izquierda

LA COMPOSICIÓN EN LAS CLASES

Métodos para mover un punto en el

(12)

Diseño de la clase base llamada “Punto”:

//

// Declaración de métodos para mover un objeto de Punto //

public virtual void MoverArriba ( )

{y = y - 1; } // mueve el punto una unidad hacia arriba

public virtual void MoverArriba (int nroUnidades )

{y = y - nroUnidades ; } // mueve el punto hacia arriba

LA COMPOSICIÓN EN LAS CLASES

Métodos para mover un punto en el

(13)

Diseño de la clase base llamada “Punto”:

//

// Declaración de métodos para mover un objeto de Punto //

public virtual void MoverAbajo ( )

{y = y + 1; } // mueve el punto una unidad hacia abajo

public virtual void MoverAbajo (int nroUnidades )

{y = y + nroUnidades ; } // mueve el punto hacia abajo

LA COMPOSICIÓN EN LAS CLASES

Métodos para mover un punto en el

(14)

Diseño de la clase base llamada “Punto”:

//

// Declaración de Propiedades de la clase Punto //

public int X {

get

{

return (x); }

set

{

x = value; }

LA COMPOSICIÓN EN LAS CLASES

Propiedad

(15)

Diseño de la clase base llamada “Punto”:

//

// Declaración de Propiedades de la clase Punto //

public int Y { get { return (y); } set {

y = value; }

}

} // fin de la declaración de la clase "Punto"

LA COMPOSICIÓN EN LAS CLASES

Propiedad

(16)

Diseño de la clase derivada llamada “Círculo”:

Sea la clase derivada “Círculo” declarada para representar un Círculo en un plano Cartesiano conformada por:

• Dos valores correspondientes a las coordenadas x e y. • Un valor para el radio del círculo representado.

• Un campo para representar el color del círculo.

• Propiedades para manejar sus campos radio y color.

(17)

Diseño de la clase base llamada “Círculo”:

public class Círculo : Punto

{ // declaración de campos de la clase

int radio; // declara campo radio

Color colorFigura;// declara campo para el

//color de la figura

LA COMPOSICIÓN EN LAS CLASES

Declaración de campos de

(18)

Diseño de la clase base llamada “Círculo”:

// declaración de métodos de la clase //

// CONSTRUCTOR SIN PARÁMETROS //

public Círculo ( ) {

radio = 50; // se asigna 50 al radio

colorFigura = Color.Blue; // se asigna azul al // color del círculo

}

LA COMPOSICIÓN EN LAS CLASES

Constructor sin

(19)

Diseño de la clase base llamada “Círculo”:

//

// CONSTRUCTOR CON UN PARÁMETRO //

public Círculo (int radioInicial) {

radio = radioInicial;

colorFigura = Color.Blue;

}

LA COMPOSICIÓN EN LAS CLASES

Constructor con un

parámetro.

El otro campo, “colorFigura ”,

(20)

Diseño de la clase base llamada “Círculo”:

//

// CONSTRUCTOR CON DOS PARÁMETROS //

public Círculo (int radioInicial, Color colorInicial) {

radio = radioInicial;

colorFigura = colorInicial; }

LA COMPOSICIÓN EN LAS CLASES

Constructor con 2

(21)

Diseño de la clase base llamada “Círculo”:

//

// CONSTRUCTOR CON 2 PARAMETROS //

public Circulo (int r, Punto p) {

radio = r; X = p.X; Y = p.Y; }

(22)

Diseño de la clase base llamada “Círculo”:

//

// Declaración de métodos para mover un objeto de Círculo //

public override void MoverDerecha ( ) {base.X = base.X + 1; }

public override virtual void MoverDerecha (int nroUnidades ) {base.X = base.X + nroUnidades ; }

LA COMPOSICIÓN EN LAS CLASES

Métodos para mover un punto en el

(23)

Diseño de la clase base llamada “Círculo”:

//

// Declaración de métodos para mover un objeto de Círculo //

public override void MoverIzquierda ( ) {base.X = base.X - 1; }

public override virtual void MoverIzquierda (int nroUnidades ) {base.X = base.X - nroUnidades ; }

LA COMPOSICIÓN EN LAS CLASES

Métodos para mover un punto en el

(24)

Diseño de la clase base llamada “Círculo”:

//

// Declaración de métodos para mover un objeto de Círculo //

public override virtual void MoverArriba ( ) {base.Y = base.Y - 1; }

public override virtual void MoverArriba (int nroUnidades ) {base.Y = base.Y - nroUnidades ; }

LA COMPOSICIÓN EN LAS CLASES

Métodos para mover un punto en el

(25)

Diseño de la clase base llamada “Círculo”:

//

// Declaración de métodos para mover un objeto de Círculo //

public override virtual void MoverAbajo ( ) {base.Y = base.Y + 1; }

public override virtual void MoverAbajo (int nroUnidades ) {base.Y = base.Y + nroUnidades ; }

LA COMPOSICIÓN EN LAS CLASES

Métodos para mover un punto en el

(26)

Diseño de la clase base llamada “Círculo”:

//

// Expandir el Circulo, incrementa radio 1 unidad //

public void Expandir ( ) {

Radio ++; }

(27)

Diseño de la clase base llamada “Círculo”:

//

// Expandir el Circulo, incrementa radio n unids //

public void Expandir (int n) {

Radio += n; }

(28)

Diseño de la clase base llamada “Círculo”:

//

// Contraer el Circulo, reduce el radio 1 unidad //

public void Contraer ( ) {

Radio --; }

(29)

Diseño de la clase base llamada “Círculo”:

//

// Contraer el Circulo, reduce el radio n unidades //

public void Contraer (int n) {

Radio -= n; }

(30)

Diseño de la clase base llamada “Círculo”:

// Método de la clase círculo, para Pintar un objeto

public void Pintar (Graphics pintor) {

int x1, y1, ancho, alto; x1 = X - Radio;

y1 = Y - Radio;

ancho = Radio + Radio; alto = ancho;

SolidBrush miPincel = new SolidBrush (colorFigura); pintor.FillEllipse (miPincel, x1, y1, ancho, alto);

APLICACIÓN EJEMPLO

Se crea un pincel con el color de la

(31)

Diseño de la clase base llamada “Círculo”:

// Método de la clase círculo, para Borrar un objeto

public void Borrar (Graphics pintor) {

Color colorPrevio = colorFigura;

colorFigura = Form.ActiveForm.BackColor; Pintar (pintor);

colorFigura = colorPrevio; }

APLICACIÓN EJEMPLO

Se usa el color del fondo del

(32)

Diseño de la clase base llamada “Círculo”:

//

// Declaración de Propiedades de la clase Círculo //

public int Radio {

get

{

return (radio); }

set

{

radio = value; }

LA COMPOSICIÓN EN LAS CLASES

Propiedad para acceder al

(33)

Diseño de la clase base llamada “Círculo”:

//

// Declaración de Propiedades de la clase Círculo //

public Color ColorFigura { get { return (colorFigura); } set {

colorFigura = value; }

}

} // fin de la declaración de la clase “Círculo"

LA COMPOSICIÓN EN LAS CLASES

Propiedad para acceder al campo

(34)

Ejemplo del uso de la Composición en una clase:

La clase compuesta “Linea” se compone de dos

campos de la clase “Punto”, y agrega:

• Método constructor con varias formas.

• Una Propiedad para contener el valor de la

longitud de la línea, calculada como la distancia

entre los dos puntos, o extremos de la línea.

(35)

Ejemplo del uso de la Composición en una clase:

Cada uno de los campos de tipo “Punto” de la clase compuesta “Linea” puede usar los campos, métodos y propiedades de la clase “Punto”.

(36)

Ejemplo del uso de la Composición en una clase:

public class Linea {

// Declaracion de Linea, compuesta de dos Puntos //

// Declaracion de campos de la clase Linea //

Punto p1; Punto p2;

Color colorFigura; // declara campo para el

LA COMPOSICIÓN EN LAS CLASES

Los campos de la clase son de tipo de dato de

(37)

Ejemplo del uso de la Composición en una clase:

// Declaracion de Metodos de la clase Linea //

public Linea ( ) {

p1 = new Punto ( ); p2 = new Punto ( ); }

public Linea (Punto izq, Punto der) {

// CONSTRUCTOR CON 2 PARAMETROS de la clase Punto

p1 = new Punto (izq.X, izq.Y); p2 = new Punto (der.X, der.Y); }

LA COMPOSICIÓN EN LAS CLASES

(38)

Ejemplo del uso de la Composición en una clase:

//

// Declarcion de Propiedades de la clase Linea //

public double Longitud {

get

{

double distX, distY, distX2, distY2, distancia; distX = p2.X - p1.X;

distY = p2.Y - p1.Y;

distX2 = Math.Pow(distX, 2.0); distY2 = Math.Pow(distY, 2.0);

distancia = Math.Sqrt (distX2 + distY2);

return (distancia); }

LA COMPOSICIÓN EN LAS CLASES Propiedad de la clase Linea. Sólo

(39)

Ejemplo del uso de la Composición en una clase:

public void Pintar (Graphics pintor) {

int x1, y1, x2, y2; x1 = p1.X;

x2 = p2.X; y1 = p1.Y; y2 = p2.Y;

SolidBrush miPincel = new SolidBrush (colorFigura); pintor.FillEllipse (miPincel, x1, y1, x2, y2);

}

APLICACIÓN EJEMPLO

Se crea un pincel con el color de la

(40)

Ejemplo del uso de la Composición en una clase:

public void Borrar (Graphics pintor) {

Color colorPrevio = colorFigura;

colorFigura = Form.ActiveForm.BackColor; Pintar (pintor);

colorFigura = colorPrevio; }

} // fin de la declaración de la clase “Línea"

APLICACIÓN EJEMPLO

(41)

Otro ejemplo del uso de la Composición en una clase (Rectángulo):

public class Rectangulo

{

// clase Rectangulo, compuesta de dos Puntos //

// Declaracion de campos de la clase Rectangulo //

Punto verticeSupIzq; Punto verticeInfDer ;

LA COMPOSICIÓN EN LAS CLASES La clase

“Rectangulo” se compone de 2 objetos de la clase

(42)

Otro ejemplo del uso de la Composición en una clase (Rectángulo):

public classRectangulo {

// …

Punto verticeSupIzq; Punto verticeInfDer;

//

// Declaracion de Metodos de la clase Rectangulo //

public Rectangulo ( ) {

verticeSupIzq = new Punto (); verticeInfDer = new Punto (); }

public Rectangulo (Punto izq, Punto der) {

verticeSupIzq = new Punto (izq.X, izq.Y); verticeInfDer = new Punto (der.X, der.Y); }

LA COMPOSICIÓN EN LAS CLASES La clase

“Rectangulo” se compone de 2 objetos de la clase

Punto.

El constructor usa las

(43)

Otro ejemplo del uso de la Composición en una clase: (Rectángulo):

//

// Declarcion de Propiedades de la clase Rectangulo //

public double Area {

get

{

double distX, distY, area;

distX = Math.Abs (verticeInfDer.X - verticeSupIzq.X); distY = Math.Abs (verticeInfDer.Y - verticeSupIzq.Y); area = distX * distY;

return (area); }

}

LA COMPOSICIÓN EN LAS CLASES La clase “Rectangulo”

declara una Propiedad para obtener el valor

(44)

A la clase “Rectangulo” se le ha adicionado un método para dibujar un objeto, así:

public void Pintar (Graphics pintor) {

int x1, y1, ancho, alto; x1 = verticeSupIzq .X; y1 = verticeSupIzq .Y;

ancho = verticeInfDer.X - verticeSupIzq .X; alto = verticeInfDer.Y - verticeSupIzq .Y;

SolidBrush miPincel = new SolidBrush (colorFigura); pintor.FillRectangle (miPincel, x1, y1, ancho, alto); }

(45)

A la clase “Rectangulo” se le ha adicionado otro método para borrar de la pantalla un objeto, así:

public void Borrar (Graphics pintor) {

Color colorPrevio = colorFigura;

colorFigura = Form.ActiveForm.BackColor; Pintar (pintor);

colorFigura = colorPrevio; }

APLICACIÓN EJEMPLO

Se usa el color del fondo del

(46)

Otro ejemplo del uso de la Composición en una clase (Carro):

public class Carro

{

Circulo ruedaIzq = new Circulo ( );

Circulo ruedaDer = new Circulo ( );

Rectangulo carroceria = new Rectangulo ( );

LA COMPOSICIÓN EN LAS CLASES La clase Carro se

compone de 2 círculos y un

(47)

Otro ejemplo del uso de la Composición en una clase (Carro):

public Carro ( ) {

// crea dos puntos con las coordenadas de los // vertices superior izquierdo e inferior derecho // de la ubicacion de la carroceria

// Los puntos son arbitrarios: (100,200) y (250,300) //

Punto vsi = new Punto (100, 200); Punto vid = new Punto (250, 300);

// asigna los puntos de referencia a la carroceria

carroceria.VerticeSuperior = vsi; carroceria.VerticeInferior = vid;

// asigna las coordenadas a la rueda izquierda

ruedaIzq.X = vsi.X; ruedaIzq.Y = vid.Y;

// asigna las coordenadas a la rueda derecha

ruedaDer.X = vid.X;

LA COMPOSICIÓN EN LAS CLASES

El método constructor de la clase “Carro” define las relaciones entre los campos de la

(48)

1. Desarrollar una aplicación de ventanas en la cual se especifiquen las clases “Punto” y

“Circulo”. Luego crear y dibujar un circulo.

2. Desarrollar una aplicación de ventanas en la cual se especifiquen las clases “Punto” y

“Línea”. Luego crear y dibujar una línea.

(49)

3. Desarrollar una aplicación de ventanas en la cual se especifiquen las clases “Punto” y

“Rectángulo”. Luego crear y dibujar un rectángulo.

4. Desarrollar una aplicación de ventanas en la cual se especifiquen las clases “Punto”, “Circulo” y “Rectángulo”. Luego crear y dibujar un carro.

Figure

Actualización...

Referencias

Actualización...

Related subjects :