Kłopot z zaprogramowaniem klas.

0

witam. Mam za zadanie utworzyc klase czlowiek, gdzie będzie do podania imię, nazwisko, wiek. Następnie klasa student, gdzie będzie srednia, rok oraz czy "byly". To wszystko ładnie zrobilem i napisałem metody na wczytywanie danych i ich pokazanie. Jednak to jeszcze nie wszystko. Musze jeszcze napisac klase grupy bedaca dynamiczna lista studentow, dozwolone operacje to dodaj, usuń, pokaz.
Rozumiem to w taki sposob, że mam liste grup i w tych grupach dodatkowo liste studentow. Jak to zrobic na obiektach w pascalu? Wszelkie pomysly i rady mile widziane

Edit:
korzystam z takiego nietypowego http://sourceforge.net/projects/tpascal/

0

Z czym konkretnie masz problem?

0

otoz, nie wiem jak zrobic liste list ;p tych grup.
Pomysl mam, ale nie wiem jak to wykonac, bo wygladac to ma mniej wiecej tak:
grupy
11a
studen1 (jego dane z obiektu student)
student2
...
12a
studen1
student2
itd. itp.
Nie mam pojecia jak to zrobic. Wiem, ze musze stworzyc obiekt grupy, gdzie beda nazwy tych grup, a co dalej? Stworzyc kolejny obiekt, dziedziczacy nazwy tych grup(+studentow, jezeli tak sie w ogole da...) i w nim liste?

0

Gdzie w zadaniu masz napisane że ma być lista list?
Nawet gdyby takie zadanie było to co za problem jak możesz zrobić listę czegokolwiek to potem zamiast tego czegokolwiek podstawiasz inną listę i po sprawie.

0

treść zadania: Studenci powinni zawierać się w grupach. Stworzyć klasę Grupa będącą dynamiczną listą studentów, dozwolone operacje to dodaj, usuń, pokaż.

To jak inaczej to zrobic?

0

Proste: Stworzyć klasę Grupa będącą dynamiczną listą studentów, dozwolone operacje to dodaj, usuń, pokaż.
A co autor zadania będzie robić z twoją klasą Grupa to już nie twoja broszka.

0

@zupaaa - zadanie jest proste, trzeba tylko znać podstawy OOP, żeby sprawnie je rozwiązać;

Najpierw zaimplementuj sobie klasę pojedynczego studenta; Zrób to według wytycznych, no chyba że ich nie ma; Niech sobie dziedziczy po TObject, albo THomoSapiens - zrób jak chcesz;

Następnie stwórz klasę grupy studentów, gdzie ich lista będzie przechowywana a jakiejś liście - TObjectList czy nawet macierzy dynamicznej; Dorób metody, służace do odpowiednich operacji na liście studentów - dodawanie, usuwanie, wyświetlanie ich wszystkich na ekranie; Poszczególne informacje dotyczące studenta pobieraj w parametrach metod;

Nic trudnego - spróbuj coś zrobić, a jak nie wyjdzie to zaglądnij do kursu czy zadaj jakieś pytanie.

0

chciałem, aby moja lista studentów zdefiniowana w obiekcie była zapisywana do pliku, jednakże jakoś dziwnie jest to formatowane w pliku (jeszcze imie, nazwisko i wiek mozna uznac, ale pozniej juz sie wykrzacza kompletnie). Oto obiekt i procedura zapisująca:

wskaznik=^czlowiek;
wskaznik1=^student;
...
czlowiek=object
private 
imie:string;
nazwisko:string;
wiek:string;
nast:wskaznik;
public
procedure dodaj(const im,naz,wie:string);
procedure wczytaj;
procedure pokaz;
end;

student=object(czlowiek)
private
srednia:real;
rok:integer;
byly:boolean;
nast1:wskaznik1;
public
procedure dodaj(const im,naz,wie:string;sr:real;r:integer;b:boolean);
procedure wczytaj;
procedure pokaz;
end;
procedure zapiszstud(head:wskaznik1);
var plik:file of student;
begin
assign(plik,'student.txt');
rewrite(plik);
while head<>nil do
begin
write(plik,head^);
head:=head^.nast1;
end;
close(plik);
end;
0

Naprawdę myślałeś że po zapisie binarnym otrzymasz czytelny dla człowieka plik?

0

to w jaki sposob moge zapisac to, aby bylo normalnie do oczytu przez czlowieka?

2

Najwygodniej IMHO byłoby skorzystać z klasy http://4programmers.net/Delphi/Moduły/Classes/TStringList lub przeczytaj ten art http://4programmers.net/Delphi/Pliki#id-Pliki-tekstowe pamiętaj przy tym żeby nie zapisywać wskaźnika, zamiast tego jakiś numer rekordu bo po wczytaniu taki wskaźnik będzie najpewniej wskazywał na jakieś śmieci w pamięci.

Dodatkowo proponuję skorzystać z innego IDE, darmowego Lazarusa - jest znacznie bardziej zaawansowany od tego tworu podającego się za przestarzały kompilator firmy Borland - TurboPascal, nie wiem czy przy okazji ten łobuziak nie używa nazwy zastrzeżonej ale to już pytanie na osobny temat.

0

W zadaniu nie masz napisanego że musi to być plik czytelny dla człowieka.

2

Przy okazji konstrukcja student=object(czlowiek) jest przestarzała - na prawdę tak uczy was prowadzący tworzyć obiekty? Jeśli tak to to co mówi dziel przez dwa bo najpewniej ten człowiek utknął gdzieś w latach 80-tych a zamiast tego ucz się Pascala z aktualnych książek/kursów jeśli to cię interesuje na poważnie.

1 użytkowników online, w tym zalogowanych: 0, gości: 1