Classes

27/02/2006

Galera, alguem poderia me passar algum site ou apostila que explique as funçoes das classes ( objetos). Tou começando a programar ainda, o professor passou um exercicio para gerenciar contas correntes com o uso de classes , usar constructor destructor ... etcs ... depois criar um array dinamico de classes ...

Resumindo num sei nem por onde começo , se alguem poder ajudar ai vlws.

Obs : Jah procurei no google sobre classes, mais soh q maioria era com uso em java, C, C++ ... e as que tinha falava pouco sobre as classes. Vlews


Thiagofmam

Respostas

28/02/2006

Thiagofmam

Naum quero que resolvam naum ... quero uma ideia

o Problema eh esse

[b:5eee3e8804]
1) Implementar uma classe que atenda as seguintes especificações:
Nome da classe: TContaCorrente
Objetivo: Controlar o saldo bancário de uma pessoa
Operações:
constructor Inicialize(NumConta: Integer; NomePessoa: string;
SaldoInicial: Real);
Objetivo: Inicializar o objeto com o número da conta corrente, o nome do correntista e o saldo inicial.
procedure Movimento(Data: string; Valor: Real; TipoMov: Char);
Objetivo: Registrar um movimento na conta, atualizando seu saldo. O parâmetro Data conterá a data
do movimento, o parâmetro Valor conterá o valor do movimento e o parâmetro TipoMov indica se o
movimento foi de crédito (C) ou de débito (D).[/b:5eee3e8804]

A unit do programa q tou tentando fazer ....

interface
type
TContCorrent = Class
NumConta : Integer;
NomePessoa : String;
SaldoInicial : Real;
Constructor Inicialize(NumConta: Integer; NomePessoa: string;
SaldoInicial: Real);

end;

implementation

{ TContCorrent }

constructor TContCorrent.Inicialize(NumConta: Integer; NomePessoa: string;
SaldoInicial: Real);
begin
NumConta := 0;
NomePessoa := ´´;
SaldoInicial := 0;

end;

end.

-------------------------

program PList08;

{$APPTYPE CONSOLE}

uses
SysUtils,
Crt32D7,
UList08 in ´UList08.pas´;
var
CConta : TContCorrent;

begin
Writeln(´Digite o numero da conta : ´);
Readln(CConta.NumConta);
Writeln(´Digite o nome da pessoa : ´);
Readln(CCOnta.NomePessoa);
Writeln(´Digite o saldo Inicial : ´);
Readln(CCOnta.SaldoInicial);
CConta.Inicialize(CConta.NumConta,CCOnta.NomePessoa,CCOnta.SaldoInicial);

end.

-----------------------------
lembro q meu professor falou de algo q tem q iniciar as classes q elas por padrao sao ponteiros ... q inicializa sem apontar pra nada .... !!

Queriam q me ajudasse ai ... vlws
[/b]


Responder Citar

28/02/2006

Aroldo Zanela

Colega,

Obviamente que esta simplificação é apenas para fins didáticos, pois ´Conta Corrente´ está mais para um atributo de ´Correntista´ que para uma classe. Seguindo o seu raciocínio inicial:

Declarando a classe:
TContaCorrente = Class
  private
    FNumeroConta: Integer;
    FNomePessoa: String;
    FSaldoInicial: Currency;
    procedure SetNomePessoa(const Value: String);
    procedure SetNumeroConta(const Value: Integer);
    procedure SetSaldoInicial(const Value: Currency);
  public
    Constructor Inicialize(ANumeroConta: Integer; ANomePessoa: string; ASaldoInicial: Currency);
    Destructor Destroy; override;
    property NumeroConta: Integer read FNumeroConta write SetNumeroConta;
    property NomePessoa: String read FNomePessoa write SetNomePessoa;
    property SaldoInicial: Currency read FSaldoInicial write SetSaldoInicial;
end;


Implementação dos métodos:
{ TContaCorrente }

destructor TContaCorrente.Destroy;
begin
  inherited;
end;

constructor TContaCorrente.Inicialize(ANumeroConta: Integer;
  ANomePessoa: string; ASaldoInicial: Currency);
begin
inherited;
  FNumeroConta:= ANumeroConta;
  FNomePessoa:= ANomePessoa;
  FSaldoInicial:= ASaldoInicial;
end;

procedure TContaCorrente.SetNomePessoa(const Value: String);
begin
  FNomePessoa := Value;
end;

procedure TContaCorrente.SetNumeroConta(const Value: Integer);
begin
  FNumeroConta := Value;
end;

procedure TContaCorrente.SetSaldoInicial(const Value: Currency);
begin
  FSaldoInicial := Value;
end;


Testando:
procedure TForm1.btn1Click(Sender: TObject);
var ContaCorrente: TContaCorrente;
begin
ContaCorrente:= TContaCorrente.Inicialize(1,´Aroldo Zanela´, 10000);
  ShowMessage(ContaCorrente.NomePessoa);
  ContaCorrente.Free;
end;


btn1 = TBitBtn no formulário.

A propósito, existem várias apostilas no site da DevMedia que poderão lhe ajudar.


Responder Citar

28/02/2006

Thiagofmam

constructor TContaCorrente.Inicialize(ANumeroConta: Integer;
ANomePessoa: string; ASaldoInicial: Currency);
begin
inherited;
FNumeroConta := ANumeroConta;
FNomePessoa := ANomePessoa;
FSaldoInicial := ASaldoInicial;
end;

procedure TContaCorrente.SetNomePessoa(const Value: String);
begin
FNomePessoa := Value;
end;

procedure TContaCorrente.SetNumeroConta(const Value: Integer);
begin
FNumeroConta := Value;
end;

procedure TContaCorrente.SetSaldoInicial(const Value: Currency);
begin
FSaldoInicial := Value;
end;

Essa parte foi de grande importancia pra mim ... tava me batendo +- com isso ... com a estrutura q eu teria q adequar a unit.

Vou procurar mais sobre classes no site.
Vlws mesmo :D


Responder Citar