PDA

Ver la Versión Completa : Ayuda con una duda de la declaracion de clases


MayerlingCP
29-06-2016, 17:41:15
Saludos a todos, necesito que me ayuden a aclarar esta gran duda. Es la primera vez que trabajo en delphi y mi experiencia es 0 en esto xD.
me asignaron una tarea de la universidad y pues hize el programa (al menos calcula lo que el profesor pide) pero trabaje fue con un formulario.
el ejercicio dice:

APLICAR UN LENGUAJE ORIENTADO A OBJETOS PARA DESARROLLAR EL SIGUIENTE PROBLEMA:

Una fábrica de Franela, confecciona 3 modelos de Franela para caballero
con los siguientes precios de venta:

1.- Modelo Casual……….4300

2.- Modelo Sport…………3800

3.- Modelo algodón.…..…3500

Los 3 modelos son fabricados únicamente en talla 14.

La empresa planea fabricar los tres modelos también en tallas 16 y 18, y desea un programa que
calcule los precios de venta para estas nuevas tallas.
Se sabe que por cada número que se aumente en la talla, su precio deberá incrementarse 300 Bolívares.

Escribe un programa que pida el modelo de Franelas y la medida (14,16 ó 18) e imprima en pantalla
su precio de venta correspondiente. Adicionalmente si el pedido es mayor de 12 franelas de
cualquier modelo recibirá un descuento del 10 % el cual se debe reflejar en la factura.

mi codigo del unit1 es:


unit Unit1;

interface

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, jpeg, ExtCtrls, StdCtrls;

type
TForm1 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
imgn: TImage;
Label5: TLabel;
Label6: TLabel;
Label7: TLabel;
Label8: TLabel;
botoncalcular: TButton;
btnBorrar: TButton;
botoncerrar: TButton;
editcasual: TEdit;
editsport: TEdit;
editalgodon: TEdit;
edittalla: TEdit;
subtotal: TEdit;
editdescuento: TEdit;
etotalpagar: TEdit;
Label9: TLabel;
Label10: TLabel;
Label11: TLabel;
Label12: TLabel;
editotalc: TEdit;
editotalsp: TEdit;
editotalalg: TEdit;
procedure botoncerrarClick(Sender: TObject);
procedure btnBorrarClick(Sender: TObject);
procedure botoncalcularClick(Sender: TObject);

private
{ Private declarations }
public
{ Public declarations }
end;

var
Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.botoncerrarClick(Sender: TObject);
begin
close;
end;

procedure TForm1.btnBorrarClick(Sender: TObject);
begin

editcasual. Clear;
editcasual. SetFocus;
editsport. Clear;
editsport. SetFocus;
editalgodon. Clear;
editalgodon. SetFocus;
edittalla. Clear;
edittalla. SetFocus;
subtotal. Clear;
subtotal. SetFocus;
editotalc.Clear;
editotalc.SetFocus;
editotalsp.Clear;
editotalsp.SetFocus;
editotalalg.Clear;
editotalalg.SetFocus;
editdescuento. Clear;
editdescuento. SetFocus;
etotalpagar. Clear;
etotalpagar. SetFocus;
end;

procedure TForm1.botoncalcularClick(Sender: TObject);

var
m_cas, m_sport, m_alg, talla, totalcasual, totalsport, totalalgo, productos: Integer;
total, desc, factura: real;

begin
m_cas:= StrToInt(editcasual.Text);
m_sport:= StrToInt(editsport.Text);
m_alg:= StrToInt(editalgodon.Text);
talla:= StrToInt(edittalla.Text);

case talla of
14:
begin
totalcasual:= (m_cas*4300);
totalsport:= (m_sport*3800);
totalalgo:= (m_alg*3500);
editotalc.Text:= IntToStr(totalcasual);
editotalsp.Text:= IntToStr(totalsport);
editotalalg.Text:= IntToStr(totalalgo);
total:=(m_cas*4300) + (m_sport*3800) + (m_alg*3500);
subtotal.text:= floatToStr(total);
end;

16:
begin
totalcasual:= (m_cas*4600);
totalsport:= (m_sport*4100);
totalalgo:= (m_alg*3800);
editotalc.Text:= IntToStr(totalcasual);
editotalsp.Text:= IntToStr(totalsport);
editotalalg.Text:= IntToStr(totalalgo);
total := (m_cas*4600) + (m_sport*4100) + (m_alg*3800);
subtotal.text:= floatToStr(total);
end;

18:
begin
totalcasual:= (m_cas*4900);
totalsport:= (m_sport*4400);
totalalgo:= (m_alg*4100);
editotalc.Text:= IntToStr(totalcasual);
editotalsp.Text:= IntToStr(totalsport);
editotalalg.Text:= IntToStr(totalalgo);
total := (m_cas*4900) + (m_sport*4400) + (m_alg*4100);
subtotal.text:= floatToStr(total);
end;

else begin ShowMessage('Talla Incorrecta');
end;
end;

productos:=(m_cas) + (m_sport) + ( m_alg);
if productos>12 then
begin
desc:=(total*10/100);
editdescuento.Text:=floattoStr (desc);
factura:=total-desc;
etotalpagar.Text:=floattostr (factura);
end

else begin
desc:=(0);
editdescuento.Text:=floattoStr (desc);
factura:=total-desc;
etotalpagar.Text:=floattostr (factura);
end;



end;



end.


mi DUDA es la siguiente en el programa se puede ver que TForm1 = class(TForm), estará bien mi programa o la clase tenia que ser definida segun el ejercicio en este caso FRANELAS. Espero haberme explicado bien porque lo que no quiero es que el profesor me diga que esta mal porque no es orientado a objetos ya que no desarrolle el ejercicio con sus clases y esas cosas de la POO

Casimiro Notevi
29-06-2016, 18:42:39
Bienvenido a clubdelphi, como siempre aconsejamos a los nuevos, no olvides leer nuestra guía de estilo (http://www.clubdelphi.com/foros/guiaestilo.php), gracias por tu colaboración :)

También recuerda poner los tags al código fuente, ejemplo:

http://www.clubdelphi.com/images/UtilizarTAGs.png

Además no olvides para otras ocasiones, poner títulos descriptivos a tus preguntas, ¡¡¡Gracias!!! :)

BDWONG
29-06-2016, 21:23:33
Bueno la realidad es que el Form si esta utilizando programacion orientada objetos pero la forma en que lo resuelves no lo es precisamente, me imagino que tu profesor te habra pedido que crearas una clase para resolver el problema y en base a eso utilizar un form para mostrar los datos de manera mas visual

Si estoy en lo correcto me arme un sencilla clase llamada TFranela que pide por el constructor el modelo de la franela, tamano y cantidad y en base a estos datos con el metodo calcularPrecio retorna un total donde ya va involucrado tanto el aumetno segun el tamano de la franela y el descuento si se compra mas de 12 piezas.

Ejemplo:
type
TModelo=(casual=4300,sport=3800,algodo=3500);
TTalla=(catorce=0,dieciseis=300,dieciocho=600);

{ TFranela }

TFranela=class(TObject)
private
fmodelo:TModelo;
ftalla:TTalla;
fcantidad: DWord;
public
constructor create(modelo:TModelo; talla:TTalla; cantidad:DWord);
function calcularPrecio: Double;
end;

{ TFranela }

{Constructo que crea un objeto de tipo TFranela en base a un modelo, talla y
cantidad de piezas}
constructor TFranela.create(modelo: TModelo; talla: TTalla; cantidad: DWord);
begin
inherited create;
self.fmodelo:=modelo;
self.ftalla:=talla;
self.fcantidad:=cantidad;
end;


{Funcion para calcular el preccio de la franela o franelas en base al precio por modelo
multiplicado por la cantidad de piezas y mas los bolivares extras segun la talla}
function TFranela.calcularPrecio: Double;
var total:Double;
begin
total:=ord(fmodelo)*fcantidad+ord(ftalla); //calculamos el total

if Self.fcantidad>12 then total:=total-(total*0.10); //Restamos el 10 %

Result:=total;
end;

var
f1:TFranela;
precio: Double;
begin
//creeamos el objeto
f1:=TFranela.create(algodo,dieciocho,1);

precio:=f1.calcularPrecio();
WriteLn(precio:0:2);

f1.Free; //liberamos la memoria

ReadLn;
end

PD: El programa funciona en modo consola pero puedes copiarte toda la clase y meterla en una unit y hacer el llamado de la clase desde tu form.
si tienes dudas me avisas
SALUDOS.....:D