Vous êtes sur la page 1sur 54

Diagrama de Clase.

Definicin:
Es la representacin de las caractersticas, atributos y
funciones que tiene una clase en uno de sus objetos.

Atributos: Pertenecen exclusivamente al objeto.
Ejemplo: Para el objeto Beb.

double estatura//metros
double peso//gramos
string genero
int da nacimiento

Funcionalidad<Mtodos>: Bsicamente son las acciones que va
a realizar el objeto.

Bebe ( )// Es el constructor
Llorar ( )
Comer ( )
Dormir ( )

_El mtodo Constructor: Permite inicializar los atributos
de la clase, tiene el mismo nombre que ella y no tiene
retorno.
_Parmetros: Son aquellas definiciones que estn dentro del
parntesis y que representan valores que pueden ser datos
por un usuario, o por otro programa.



Nota: Todas las palabras reservadas (class, int, string) van
con minsculas, a excepcin de las que representan una
clase. (Datetime).


Ejercicio en clase:
Realice un mtodo que reciba como parmetro el nmero de horas trabajadas,
el valor por hora y el cdigo del empleado, y calcule el sueldo a recibir
considerando un descuento por seguridad social y una bonificacin que
depender de su sueldo. Si el sueldo es hasta 100USD, un bono del 5%, si llega
hasta 300USd, un bono del 10% y si supera los 300USD, un bono del 15%.

TextBox =jTextFiel

_name: txtNum1
_text: (titulo del cuadrado) Generalmente vacio.

label= jLabel

_name:lblNum1
_text: Ingrese #1

button= jButton

_name: btnPotencia
_text: Potencia

Reglas:
_Para designar el nombre de los objetos grficos se toman en
cuenta las tres primeras consonantes que forman su
nombre.
_Si el nombre del objeto tiene dos palabras o ms se toma en
cuenta las ms representativas de la primera palabra y de
las siguientes.
_Si trabajamos con objetos de tipo text normalmente llevan
etiquetas (label).
_Para designar el nombre de los objetos grficos se toman en
cuenta las tres primeras consonantes que forman su
nombre.

Sintaxis para definir un Objeto.
Para utilizar una clase es necesario definir un objeto de
la clase.

class Form1

Operaciones obj1; //inicializa
objeto

// Todo objeto debe inicializarse si tiene
//parmetros en su constructor, que puede
//visualizarse en el botn OK de la forma.
private void MouseClickedOK(----
---)


obj1=new Operaciones
(Convert.ToInt32(txtNum1.Text),
Convert.ToInt32(txtNum2.Text));
// Al salir del mtodo del botn OK se ejecuta
//el constructor de la clase que ha sido
//nombrada (Operaciones) por lo tanto sus
//atributos ya tienen valores.(Num1 tiene el
//valor de txtNum1)

SINTAXIS

<Nombre Clase> <Nombre Objeto>;







<N. Objeto>=new<N. Clase>
(<parmetros>);
FORMA GENERAL DE ARCHIVOS
private void btnCargar_Click_1( object sender, EventArgs e)
{
archivo = "";
ofdArchivo.ShowDialog();
archivo = ofdArchivo.FileName;
if (archivo != "")
{
rtbArchivo.LoadFile(archivo, RichTextBoxStreamType.PlainText);
btnAadir.Visible = true;
btnDividir.Visible = true;
btnGrabar.Visible = true;
}
}

Este botn nos permite cargar el archivo que fue creado en un BlocK de
Notas para que este sea utilizado en el programa.
BOTON CARGAR
private void btnDividir_Click_1(object sender, EventArgs e)
{
string [] pal;
lstArchivo.Items.Clear();
for (int i = 0; i < rtbArchivo.Lines.Length; i++)
{
pal = rtbArchivo.Lines[i].Split();
for (int j = 0; j < pal.Length; j++)
{
pal[j] = pal[j].Trim();
lstArchivo.Items.Add(pal[j]);
}
}
}

Este botn permite dividir el registro en campos para esto debemos crear un
lisBox en el cual aparecen los campos de manera ordenada de cada uno de
los registros del archivo.
BOTON DIVIDIR
{
if (txtNombre.Text != "" && txtEdad.Text != "" && txtEstadoCivil.Text != "")
{
rtbArchivo.AppendText(txtNombre.Text + ";" + txtEdad.Text + ";" +
txtEstadoCivil.Text + "\n");
txtNombre.Text = "";
txtEdad.Text = "";
txtEstadoCivil.Text = "";
MessageBox.Show("su informacion fue aadida satisfactoriamente");
btnAadir.Visible = false;
}
}

Este botn permite aadir informacin al archivo llenando los textBox en cada
uno de sus campos
que tenga el archivo

BOTON AADIR
private void btnGrabar_Click_1(object sender, EventArgs e)
{
if (rtbArchivo.Lines.Length > 0)
rtbArchivo.SaveFile(archivo, RichTextBoxStreamType .PlainText);
MessageBox .Show( "su informacin se grabo correctamente );
}

Este botn permite grabar el cambios o ingreso de campos o informacin
al archivo creado que esta siendo manejado por el programa.

BOTON GRABAR
private void btnEliminar_Click_1(object sender, EventArgs e)
{
rtbArchivo.ReadOnly = false;
rtbArchivo.Cut();
rtbArchivo.ReadOnly = true;
}

Este botn elimina todos los datos que contienen el archivo creado
anteriormente.
BOTON ELIMINAR
private void btnGrabarOtro_Click_1(object sender, EventArgs e)
{
sfdArchivo.ShowDialog();
archivo = sfdArchivo.FileName;
try
{
rtbArchivo.SaveFile(archivo, RichTextBoxStreamType .PlainText);
}
catch (ArgumentException error)
{
MessageBox .Show("Excepcion: " + error);
}
}

Este botn guarda la informacin en otro archivo con un nombre diferente
BOTON GRABAR EN OTRO ARCHIVO
private void timer1_Tick_1(object sender, EventArgs e)
{
if (txtNombre.Text != "" && txtEdad.Text != "" &&
txtEstadoCivil.Text != "")
btnAadir.Visible = true;

}

Es un contador de tiempo que mide en ns se lo utiliza para validar.

BOTON TIMER
MANEJO DE ARCHIVOS
private void btnBuscar_Click_1(object sender, EventArgs e)
{
string nombre = txtNombreBuscar.Text;
rtbArchivo.ReadOnly = false;
int i = rtbArchivo.Find(nombre);
rtbArchivo.Cut();
rtbArchivo.ReadOnly = true;
}

Este botn realiza la bsqueda de un campo en el registro del archivo y
lo elimina con la instruccin (rtbArchivo.Cut();).

Suponga tener un archivo que tiene almacenado la figura geomtrica, el nmero de
lados y la longitud de lado.
Recupere las datos a una matriz y genere otro archivo que almacena el tipo de figura
y su rea.

double n1,n2,p;
string[,]M = new string [rtbFiguras.Lines.Length,2];
for (int i=0; i<rtbFiguras.Lines.Length; i++)
{
M[i,0] = Matriz[i,0];
n1 = Convert.ToDouble(Matriz[i,1]);
n2 = Convert.ToDouble(Matriz[i,2]);
p = n1*n2;
M[i,1]= Convert.Tostring(p);
}

Nota
El mtodo que se realizo es para pasar de una matriz a otra matriz creada


figura # lados longitud
cuadrado 4 4
triangulo
figura rea
cuadrado 16
Matiz dada
Matriz creada
for (int j=0; j<rtb.Lines.Length; j++)
{
rtbPerimetro.AppendText(M[j,0]+ ; + M[j,1] + \n);
}
rtbPerimetro. SaveFile ( Perimetro.txt
RichTextBoxStreamTypes.PlainText);
}




Nota
Estas instrucciones escritas son para pasar de una matriz a un
rtb.

EJERCICIO
Suponga dispone de un archivo que contiene informacin sobre los
pacientes,codmedico,codpaciente, fecha de cita.
Realice un reporte que permita conocer al paciente que tubo mas citas en un
mes ingresando por en usuario a travs del formulario. Asumir que los datos
del archivo ya se encuentra en la matriz.


private void ReporteClick(-----)
{
int i,j,cont=0;
rtbCitas.LoadFile(Citas.txt , RichTextBoxtStreamType.PlainText);
string[ ] pal = rtbCitas.Lines.Length; col];
int col = pal.Lentgh;
matriz = new string[rtbCitas.Lines.Length; col];
for(i=0; i<rtbCitas.Lines.Length; i++)
{
pal = rtbCitas.Lines[i].Split(;);
for (j=0; j<pal.Length; j++)
{
pal[j] = pal[j].Trim( );
codme codp fecha
m01 p01 6/01/2008
m01 p02 14/01/2008
m02 p03 5/02/2008
m03 p01 25/02/2008
m03 p01 05/05/2008
matriz[i,j] = pal [j];
}
}
for (i=0; i<rtbCitas.Lentgth; i++)
{
if (matriz[i,1] == txtcodp.Text);
{
if (txt mes.Text == Emes(matriz[i,2])
{
cont++;
}
}
txtnveces.Text = convert .ToSTring(cont);
}

EJERCICIO
Suponga un archivo que contiene el cod del cliente el monto de la
transaccin y el tipo de transaccin escriba las instrucciones para conocer el
saldo de un cliente cuyo cdigo es ingresado en la forma. Asuma que el
sueldo inicial de todo los clientes es cero. Asuma que ya esta en la matriz.
codcli monto tipo
01 100 deposito
02 200 retiro
03 40 deposito
04 350 retiro
Matriz Inicial
METODO EXTRAER MES

public string Emes ( string fecha)
{
string mes;
mes = fecha Sub String(3,2)
return mes;
}
int i;
double saldo = 0;
for (i=0; i<rtbCliente.Length; i++)
{
if (matriz[i,0]==txtcodC.Text)
{
if (matriz[i,2]== deposito )
{

saldo=saldoConvert.ToDouble(matriz[i,1]);
}
else
if (txt[i,2]== retiro )
{
saldo=saldo Convert.ToDouble(matriz[i,1]);
}
}
txtsaldo.Text =Convert.ToSTring(saldo);

Introduccin

La herencia es un mecanismo que posibilita la
definicin de una clase a partir de otra dando
soporte para registrar y utilizar las relaciones de
especializacin o generalizacin existentes entre las
clases.


Concepto de Herencia
La herencia proporciona un mecanismo para definir
una clase nueva a partir de otra que ya existe,
modificando la nueva clase se denomina, clase
Derivada y la clase de la que se hereda se denomina
Clase Base. La clase derivada es la misma que la clase
base pero se le pueden aadir nuevos campos, mtodos
y atributos.

La clase base puede ser al mismo tiempo Clase
Derivada y cuando existen varios niveles de herencia
se denomina Jerarqua de clase
La herencia proporciona a la programacin orientada
a objetos la posibilidad de reutilizar el Cdigo y el
Polimorfismo de referencias

Concepto de Herencia
Ejemplo de Herencia

Using system // Clase padre
namespace Herencia
{
public class ClaseBase
{
public int a;
public int b;
public void I mprimir_ab() // permite imprimir
{
Console.WriteLine(a={1},b={2}, a, b);
}
}
}

a =
b =
Imprimir _ ab ( );
Clase hijo
public class Clase Derivada:ClaseBase //clase derivada que
hereda de clase base
{
public int c; // declaramos las variables como publicas
public void Imprimir_c ( ) // permite imprimir
{
Console.WriteLine(c={a}, c) ;
}
}

c
a Estas dos variables heredo de la clase padre
b
Imprimir _ c ( );
Imprimir _ ab ( );
Class Herencia App
{
ClaseBase cb = new ClaseBase( ); // realizamos o definimos
ClaseDerivada cd = new ClaseDerivada( );
cb.a =11; // al objeto de la clase pngale 11
cb.b =12; // al objeto de la clase pngale 12
cd.a =21; // al objeto de la clase pngale 21
cd.b =22; // al objeto de la clase pngale 22
cb.c =23; // al objeto de la clase pngale 23
cb. Imprimir _ab ( );
cb. Imprimir _ ab ( );
cb. Imprimir _ c ( );
}
Nota: siempre se va a ejecutar la clase aplicacin (siempre)

MODIFICADORES DE ACCESO
Publico (public): significa que cualquier mtodo o
cualquier programa puede ingresar
Public , visible a todos los usuarios de una clase
Privado (prvate): significa que aqu no tienen acceso
las otras clases adems este da o permite el acceso a
todo lo que sea publico


MODIFICADORES DE ACCESO
Prvate, slo cdigo dentro de la misma clase
contenedora tiene acceso a un miembro privado. Es el
modo de acceso por defecto.
Privado: Es privado para todos las clases excepto para
las clases herederas (hijos)
Protected, miembros accesibles tanto por dentro de la
clase como en clases derivadas

Using system
name space Acceso con Herencia
{
public classBase
{ cb
private int x Pri;
public int y pub;
protected int z Pro;
public void Imprimir ( )
{
Console.Write Line(x Pri={0}, y pub{1}, z Pro{2}; x Pri,
y pub, z Pro );
}
}


X Pri=2 ;
Y Pub=3 ; z Pro=14
Imprimir ( )
public class Derivada:Base
{
int x;
public void Suma ( );
}
}
}
{
Static void main (string{}args)
{
Base una Clase Base = new Base ( );
una clase base Imprimir ( ):
una clase derivada Imprimir ( ):
una clase Derivada. Suma ( );
}
}
xPri=12 ; x=15
yPub=13 ; zPro=14
Suma=yPub + zPro +x
Imprimir ( )
PROGRAMA REALIZADO EN CLASE

using system
{
name space figura;
{
public class Circulo
{
public const double Pi = 3.141592:
protected double radio;
public Circulo (double radio);
{

this.radio = radio;
}
public virtual double Area ( )
{
return Pi * radio *radio ;
}
}
}
}

Mtodos virtuales

Ya hemos visto que es posible definir tipos cuyos
mtodos se hereden de definiciones de otros tipos. Lo
que ahora vamos a ver es que adems es posible cambiar
dicha definicin en la clase hija, para lo que habra que
haber precedido con la palabra reservada virtual la
definicin de dicho mtodo en la clase padre. A este tipo
de mtodos se les llama mtodos virtuales ademas
Se escribe en los mtodos que se estn escribiendo
Se escribe en la clase base

OVERRIDE
Esta palabra reservada significa escritura sin que se borre
esta palabra se escribe en las clases derivadas
La sobre escritura de los mtodos exige:
Que el mtodo debe sobre escribirse tanto en la clase
base como en la clase derivada
Ejemplo : rea ,rea
Que los parmetros del mtodo sean iguales tanto en
la clase base como en la clase derivada.
Esto quiere decir que en la clase base como en la clase
derivada deben ser igual los parmetros, el tipo, en
numero,



OVERRIDE
Esto quiere decir que en la clase base como en la clase
derivada deben ser igual los parmetros, el tipo, en
numero,
Que el retorno del mtodo sea del mismo tanto en la
clase base como en la clase derivada.
Los nombres y los tipos deben de ser iguales tanto en
la clase base como en la clase derivada Ej.
Public virtual doubl Area ( );
Public override doubl Area ( );

CONSIDERACIONES
La palabra Base permite acceder al mtodo de la clase
derivada
La palabra reservada base permite acceder a cualquie
mtodo de la clase base sin la necesidad de definir un
objeto de la clase base
En el caso de tener en la clase derivada de esta manera

c= ; b = c =
Imprimir
Imprimir
Aqu no sabemos cual va a imprimir si el de
la clase base o el de la clase derivada hara
no tener estos inconvenientes es necesario
que al momento de que envos a imprimir
especifiquemos de esta manera BASE.
Imprimir o a su vez DERIVADA. Imprimir.

CONSTRUCTORES Y HERENCIA
Como se invoca a un constructor de la clase derivada, se
ejecuta previamente, por defecto, el constructor de la clase
base por ejemplo.
using system
name space Figuras
{
public class Circulo // utilizamos una palabra reservada para
indicar que es constante
{
public const double Pi = 3.141592;
protected double radio; // accessible solo para la clase
base
public Circulo (double radio)
{

CONSTRUCTORES Y HERENCIA
this. Radio = radio
}
public virtual double Area ( ) // se escribe virtual por
que tanto la clase base como la clase derivada
calculan el area
{
return Pi * radio * radio;
}
}
}

EJEMPLO
{
{
public class Cilindro : Circulo // hereda cilindro de la clase
circulo
{
doubl altura;
public Cilindro (doubl radio, doubl altura) : base (radio) //
envi desde la clase base el valor del radio.
{
this . altura = altura; // esta todava no se ejecuta en la clase
base por eso le ponemos aqui
}
public override doubl Area ( )
{

return base. Area ( ) * altura; // aqu en esta lnea se ejecuto
esto ( PI * radio *radio)
}
}
}
}
class app Constructores
{
static void main ( _ _ _ _ _ _ _ )
{
Cilindro c = new Cilindro (1, 2) // Cilindro c y ejecute el
constructor de cilindro
Console. Write Line ( Area={0}, c. Area ( ))
}
}

TALLER
namespace HERENCIA
{
public class Circulo
{
public const double PI= 3.141592;
protected double radio;
public Circulo(double radio)
{
this.radio=radio;
}
public virtual double Area()
{
return PI*radio*radio;
}
}
Taller
public class Esfera:Circulo
{
double constante;
public Esfera(double radio):base(radio)
{
this.constante = 4;
}
public override double Area()
{
return base.Area() * constante;
}
}
Taller
class AppConstructores
{
static void Main(string[] args)
{
Esfera esfera = new Esfera(2);
Console.WriteLine("Area Esfera={0}", esfera.Area());
Console.ReadLine();
}
}

Este programa realizado calcula el rea de una esfera de radio =4

Vous aimerez peut-être aussi