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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

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

Ответ
 
Опции темы Поиск в этой теме
Старый 03.08.2017, 13:42   #1
goto ∞
Форумчанин
 
Аватар для goto ∞
 
Регистрация: 21.12.2010
Сообщений: 155
По умолчанию Классы и список

Описал класс книга следующим образом
Код:
TBook = class
         private
            Name : string;
            Avtor: string;
            Count: byte;
         public
            constructor Create; overload;
            constructor Create(pName, pAvtor : string; pCount : integer); overload;
            destructor Destroy;
            function GetName : string;
            function GetAvtor: string;
            function GetCount: integer;
            procedure SetCount(pCount : integer);                        //      Изменение информации о количестве данной книги
            procedure SetBook(pName, pAvtor : string; pCount : integer); //
      end;
Теперь нужно описать класс отдел причем каждый отдел рассматривается как набор книг
Для объединения книг в отделах используется очередь на основе обычного массива со сдвигом элементов


Код:
TOtdel = class
      private
               Name : string;   //Название отдела
             Number : integer;// Номер отдела
             Books  : array [1..N] of TBook;
     public
             constructor Create; overload;  
             constructor Create()  // ???
А дальше не могу понять, с какими параметрами правильно будет объявить метод Create класса TOtdel
goto ∞ вне форума Ответить с цитированием
Старый 03.08.2017, 13:52   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

А чего не коллекцию использовать?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 03.08.2017, 14:05   #3
goto ∞
Форумчанин
 
Аватар для goto ∞
 
Регистрация: 21.12.2010
Сообщений: 155
По умолчанию

В задание нету, точнее есть но разрешается использовать только как дополнение к свои классам
goto ∞ вне форума Ответить с цитированием
Старый 03.08.2017, 14:25   #4
Sciv
Старожил
 
Аватар для Sciv
 
Регистрация: 16.05.2012
Сообщений: 3,211
По умолчанию

Цитата:
Сообщение от goto ∞ Посмотреть сообщение
с какими параметрами правильно будет объявить метод Create класса TOtdel
Ну наверное, с теми же, которые у Вас в секции private? Должен же отдел как-то имя и номер получить...

А что касается массива с книгами - сделайте динамический массив и допишите в класс методы AddBook и DeleteBook.

А ещё вопрос - в чём смысл задавать по два конструктора (с параметрами и без)?
Начал решать проблему с помощью регулярных выражений. Теперь решаю две проблемы...
Sciv вне форума Ответить с цитированием
Старый 03.08.2017, 14:36   #5
goto ∞
Форумчанин
 
Аватар для goto ∞
 
Регистрация: 21.12.2010
Сообщений: 155
По умолчанию

Цитата:
Сообщение от Sciv Посмотреть сообщение
Ну наверное, с теми же, которые у Вас в секции private? Должен же отдел как-то имя и номер получить...

А что касается массива с книгами - сделайте динамический массив и допишите в класс методы AddBook и DeleteBook.

А ещё вопрос - в чём смысл задавать по два конструктора (с параметрами и без)?
Я пробовал так, мне сказали что это абсолютно неправильно
Код:
...
constructor Create(pName : string; pNumber : integer; pBook : array of TBook); overload;
...
Без параметров это когда по умолчанию устанавливаются свойства.
goto ∞ вне форума Ответить с цитированием
Старый 03.08.2017, 15:15   #6
goto ∞
Форумчанин
 
Аватар для goto ∞
 
Регистрация: 21.12.2010
Сообщений: 155
По умолчанию

Может правильно будет таким образом?
Код:
constructor TOtdel.Create(pName : string; pNumber : integer; pBook : TBook); overload;
Хотя это должно быть в методе AddBook то что подчеркнуто.

Вообщем такую ересь задают преподы под названием ООП которую преподают по двухстраничным пособиям, РФ образование


Может стоит в класс Отдел добавить свойства First и Last для работы структуры данных очередь :

Код:
TOtdel = class
      private
               Name : string;   //Название отдела
             Number : integer;// Номер отдела
             Books  : array [1..N] of TBook;
             First, Last : integer;  // First - первая занятая ячейка, Last первая свободная ячейка
...

Последний раз редактировалось goto ∞; 03.08.2017 в 15:26.
goto ∞ вне форума Ответить с цитированием
Старый 03.08.2017, 15:43   #7
goto ∞
Форумчанин
 
Аватар для goto ∞
 
Регистрация: 21.12.2010
Сообщений: 155
По умолчанию

Вот такой вариант без добавления и удаления и некоторых методов

Код:
TOtdel = class
      private
               Name : string;                //Название отдела
             Number : integer;               //Номер отдела
             Books  : array [1..N] of TBook;
             First, Last : integer; // First - первая занятая ячейка, Last первая свободная ячейка
      public
             constructor Create; overload;
             constructor Create(pName : string; pNumber, pFirst, pLast : integer); overload;
             ...
    end;
Получается в методе Create вообще массив в качестве параметра не нужно использовать
goto ∞ вне форума Ответить с цитированием
Старый 03.08.2017, 15:53   #8
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Не надо pNumber, pFirst, pLast в конструкторе. Методы AddBook (возможно и AddBooks для добавления массивом), DeleteBook должны сами внутри классовые переменные такого рода поддерживать. Снаружи они вообще должны быть не доступны. Зато должнs быть свойства только для чтения CountBooks и индексное для доступа к объекту книга. А также возможно метод FindBook по наименованию
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 03.08.2017 в 15:56.
Аватар вне форума Ответить с цитированием
Старый 03.08.2017, 20:04   #9
goto ∞
Форумчанин
 
Аватар для goto ∞
 
Регистрация: 21.12.2010
Сообщений: 155
По умолчанию

Цитата:
Сообщение от Аватар Посмотреть сообщение
Не надо pNumber, pFirst, pLast в конструкторе. Методы AddBook (возможно и AddBooks для добавления массивом), DeleteBook должны сами внутри классовые переменные такого рода поддерживать. Снаружи они вообще должны быть не доступны. Зато должнs быть свойства только для чтения CountBooks и индексное для доступа к объекту книга. А также возможно метод FindBook по наименованию
Оставить только pName? Добавить свойство CountBooks (число книг в этом отделе)
goto ∞ вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
создать список л3 из элементов входящих и в список л1 и в список л2 goosha_gio C++ Builder 1 27.06.2013 22:22
Классы, двухсвязный список Ann_93 Visual C++ 1 31.03.2012 12:53
Необходимо реализовать классы, односвязный список для хранения целых чисел, односвязный список для хранен lineico Помощь студентам 2 09.05.2011 17:45
Список через классы Счастлив Visual C++ 0 15.04.2011 19:52