Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 30.01.2013, 07:21   #1
Dokee
Пользователь
 
Регистрация: 30.01.2013
Сообщений: 10
По умолчанию Помошь с Классами

Нужно создать графическую программу отображения классов, главный Человек (THumen) у него есть фио и возраст, от него идёт Студенты(TSyudent), у с тудентов группа, кафедра и специальность. И Рабочие(TWorken), у них Профессия, Стаж и Компания. Помогите кто чем может, буду благодарен каждому совету...
Dokee вне форума Ответить с цитированием
Старый 30.01.2013, 07:40   #2
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

И нечего кросспостить, да еще и в одном разделе форума.

Ну вот Вам набросок класса Человек:

Код:
Type THumen=class
                 FIO: string[100];
                 Age: integer;
                 constructor Create;
                 destructor Destroy;
              end;

У Вас в чем траблы?
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 30.01.2013, 07:46   #3
Dokee
Пользователь
 
Регистрация: 30.01.2013
Сообщений: 10
По умолчанию

Случайно вышло 2, не знаю как удалить, только зарегался...
я накидал вот такую:

Код:
unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls;

type
  TForm1 = class(tform)
    ListBox1: TListBox;
    Button1: TButton;
    procedure Button1Click(Sender: TObject);

  private
    { Private declarations }
  public
    { Public declarations }
  end;
type
 THuman = class
 private
 FName: string;
 FAge: integer;
 protected
 public
 constructor Create(FName : string);
 overload;
 constructor Create(FAge : integer);
 overload;
 published
 property Name : string
 read   FName;
 property Age   : integer
 read   FAge;

 end;

type
 TStudent = class(THuman)
private
 FGroup: string;
 FCaf: string;
 FSpec: string;
 protected
 public
 constructor Create(FGroup, FCaf, FSpec: string);
 overload;
 published
 property Group : string
 read   FGroup;
 property Caf   : string
 read   FCaf;
 property Spec   : string
 read   FSpec;
 end;

type
TWorken = class(THuman)
private
FProfession: string;
FDepartament: string;
FProfege: integer;
protected
public

 published
 property Profession : string
 read   FProfession;
 property Profege   : integer
 read   FProfege;
 property Departament   : string
 read   FDepartament;
end;
var
  Form1: TForm1;
  a,b : TStudent;
  c,d : TWorken;
implementation

{$R *.dfm}
constructor THuman. Create(FName: string);
 begin
 a.FName := 'Щегольков сергей викторович';
 b.FName:='Рубан Александр Сергеевич';
 c.FName:='Столбов Алексей Григорьевич';
 d.FName:='Воробьев Максим Алексеевич';
 end;

 constructor THuman. Create(FAge : integer);
  begin

 a.FAge := 20;
 b.FAge := 20;
 c.FAge := 20;
 d.FAge := 20;

  end;

constructor TStudent .Create(FGroup, FCaf, FSpec: string);
begin
a.FGroup:= 'ЭВТ-10';
b.FGroup:= 'ЭВТ-10';
a.FCaf:= 'Электромагнитизм';
b.FCaf:= 'Электромагнитизм';
a.FSpec:= 'Электрик';
b.FSpec:= 'Электрик';

end;

procedure TForm1.Button1Click(Sender: TObject);

begin
 a  := TStudent.Create;
 b := TStudent.Create;

ListBox1.Items.Add(TStudent.)
end;
end.


___________
Код нужно оформлять по правилам:
тегом [CODE]..[/СODE] (это кнопочка с решёточкой #)
Не забывайте об этом!
Модератор.

Последний раз редактировалось Serge_Bliznykov; 30.01.2013 в 08:20.
Dokee вне форума Ответить с цитированием
Старый 30.01.2013, 07:47   #4
Dokee
Пользователь
 
Регистрация: 30.01.2013
Сообщений: 10
По умолчанию

Ток не пойму как вывести хоть что нибудь...))) капался в инете всё ночь капец
Dokee вне форума Ответить с цитированием
Старый 30.01.2013, 08:01   #5
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Код:
constructor Create(FName : string);
overload;
constructor Create(FAge : integer);
overload;
Зачем так? Имхо лучше будет:

Код:
constructor Create(FName : string;FAge : integer);
сразу при создании зададите человеку и имя, и возраст.

Далее:

Код:
a,b : TStudent;
c,d : TWorken;
implementation

{$R *.dfm}
constructor THuman. Create(FName: string);
begin
a.FName := 'Щегольков сергей викторович';
b.FName:='Рубан Александр Сергеевич';
c.FName:='Столбов Алексей Григорьевич';
d.FName:='Воробьев Максим Алексеевич';
end;
Неправильно. Вы создаете конструктор класса (типа шаблон, хотя не самая удачная аналогия), а параметры будете передавать в него при вызове из программы. Не говоря уже о том, что типы TStudent и THuman разные, хоть и наследуются один от другого.

Код:
constructor THuman.Create(FName : string;FAge : integer);
begin
  THuman.FName:=FName;
  THuman.FAge:=FAge;
end;
Цитата:
Ток не пойму как вывести хоть что нибудь...))) капался в инете всё ночь капец
Ну во-первых, создать экземпляр класса.

Код:
var h: THuman;
begin
  h:=THuman.Create('Иванов',18);   //Создает человека Иванова 18 лет от роду ;)
end.
и далее обращаться к элементам класса через h:

Код:
ListBox1.Items.Add(h.FName+' '+IntToStr(h.FAge));
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 30.01.2013, 08:53   #6
Dokee
Пользователь
 
Регистрация: 30.01.2013
Сообщений: 10
По умолчанию

А вот это
Код:
published
 property Name : string
 read   FName;
 property Age   : integer
 read   FAge;
Это вообще нужно? и для чего?

Код:
implementation

{$R *.dfm}
constructor THuman.Create(FName : string;FAge : integer);
begin
  THuman.FName:=FName;
  THuman.FAge:=FAge;
end;
ругаеться на эти две строчки Тхуман, [DCC Error] Unit1.pas(81): E2096 Method identifier expected

Последний раз редактировалось Stilet; 30.01.2013 в 09:13.
Dokee вне форума Ответить с цитированием
Старый 30.01.2013, 09:14   #7
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Цитата:
ругаеться на эти две строчки
Уберите THuman, это я увлекся И параметры конструктора переименуйте, не нужно, чтоб они совпадали с переменными класса:

Код:
constructor THuman.Create(FN : string;FA: integer);
begin
  FName:=FN;
  FAge:=FA;
end;
Цитата:
Это вообще нужно? и для чего?
на мой взгдяд, нет, не нужно. У Вас в классе уже есть переменные FNAme и FAge, на кой Вам еще и одноименные свойства?

Вообще, рекомендую начать с самого простого - объявить классы и конструкторы. А уже потом переходить ко всяким public, private, properties и т.п.
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...

Последний раз редактировалось Sciv; 30.01.2013 в 09:20.
Sciv вне форума Ответить с цитированием
Старый 30.01.2013, 09:15   #8
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
THuman.FName:=FName;
THuman.FAge:=FAge;
Нужно писать
Код:
  Self.FName:=FName;
  Self.FAge:=FAge;
Или не писать класс вообще, раз поля принадлежат ему.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 30.01.2013, 09:28   #9
Dokee
Пользователь
 
Регистрация: 30.01.2013
Сообщений: 10
По умолчанию

Ура! Добавил Self. Заработало
Dokee вне форума Ответить с цитированием
Старый 30.01.2013, 09:30   #10
Dokee
Пользователь
 
Регистрация: 30.01.2013
Сообщений: 10
По умолчанию

А вот теперь как сделать так что бы Обьект 'А' был классом студента, и одновременно у него можно было увидеть поля от класса Человека?
Dokee вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Работа с классами на С++ darinadarina Помощь студентам 1 08.05.2012 18:34
Задача с классами. crystalcfg Общие вопросы C/C++ 6 06.01.2012 22:01
проблема с классами lola20 Общие вопросы C/C++ 8 23.12.2010 20:42
С++: работа с классами MR_Andrew Общие вопросы C/C++ 23 01.04.2010 23:46
Вопрос с классами. Вадим Буренков Общие вопросы Delphi 11 13.07.2009 10:57