![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 | |
Старожил
Регистрация: 12.11.2010
Сообщений: 8,568
|
![]()
Здравствуйте.
Не знал, куда сунуться с этой темой, но мне чётко понятно, что моему нубскому вопросу самое месте в этом разделе. Мне об этом, конечно, стыдно спрашивать, но всё же... Решил я пофрилансить одну задачу (лаба для студента, 1 курс). В процесСе моего общения с заказчиком прозвучали такие реплики: Цитата:
Он мне скинул примеры, откуда и были взяты выше указанные заголовки процедур. А задача, которую я решаю, имеет такую формулировку: "Разработать объект список..." дальше условие не пишу, так как ключевое слово уже названо - ОБЪЕКТ. Те знания ООП, которые у меня имеются, говорят, что: 1. Конструктор и деструктор - это методы, которые используются для создания и разрушения объекта соответственно. 2. Объект - это экземпляр класса. 3. Объявив класс, мы не получим объект - его надо создать. если я где-то ошибся, поправьте меня. Ну, наконец скажу, что такой фрагмент кода: Код:
Вопрос у меня такой: Нужно ли использовать конструкторы/деструкторы для ОБЪЕКТОВ? Заранее большое спасибо. |
|
![]() |
![]() |
![]() |
#2 | |
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]() Цитата:
I'm learning to live...
|
|
![]() |
![]() |
![]() |
#3 |
personality
Старожил
Регистрация: 28.04.2009
Сообщений: 2,899
|
![]()
Хм , странный вопрос.
Возможно, Вы не в курсе, что Код:
Код:
Советую прочитать про старый тип объектов и понять с чем его едят, а также и про классы, чтобы представлять отличия и преимущества. Вкратце: объекты - что-то типа записей с методами (в новых версиях дельфи 2007+ они и так есть , в более ранних версиях записи не могут содержать методы, и их можно эмулировать типом object ), они создаются на стеке и не требуют обязательного вызова конструктора и деструктора (хотя обычно программист сам определяет что надо и вызывает в этом случае). Экземпляры классов же создаются в куче, и необходимо использование конструктора и деструктора. В Вашем случае - был создана сущность типа "объект" на стеке и она сразу доступна для работы с ней, поменяв определение на класс, и больше ничего не меняя в коде - получите Access Violation при обращении к несозданному экземпляру в строке A.x := 42; так как переменная типа "экземпляр класса" является указателем на начало тела экземпляра в куче, и без конструктора указывает неизвестно куда, конструктор же инициализирует данные для экземпляра и ссылку на них записывает в эту переменную. Возможно, примеры, посланные заказчиком , прольют определённый свет, сбросьте архивом/кодом сюда. Последний раз редактировалось phomm; 05.05.2013 в 21:10. |
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 08.04.2012
Сообщений: 3,229
|
![]()
Вообще-то ООП подразумевает инкапсуляцию, т.е. полное отсутствие переменных в интерфейсной части и доступ к ним только через методы.
Обычно при инициализации внутренним данным объекта выделяется память и присваиваются начальные значения. |
![]() |
![]() |
![]() |
#5 | ||||
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]() Цитата:
Цитата:
Код:
Цитата:
Одно из парадигм ООП, которое как бы является неким стандартом. Конструктор, особенно при создании многочисленной иерархии объектов может что-то инициализировать полезное для объекта. Для форм например инициализируются их основные свойства описанные в DFM файлах (если это делфи). Цитата:
Как говорится: На метле летать можно, но на машине лучше ![]()
I'm learning to live...
|
||||
![]() |
![]() |
![]() |
#6 | ||
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
![]() Цитата:
Цитата:
![]()
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика ![]() |
||
![]() |
![]() |
![]() |
#7 | |
personality
Старожил
Регистрация: 28.04.2009
Сообщений: 2,899
|
![]()
Я подразумевал
Цитата:
Предлагаю копья не ломать, а подождать примеров и вообще ответа ТС. |
|
![]() |
![]() |
![]() |
#8 | |||
Старожил
Регистрация: 12.11.2010
Сообщений: 8,568
|
![]()
Вот, примеры выкладываю в приложение. Я просто не очень хотел этого делать, чтобы не подставлять заказчика (вдруг препод пропалит)
Примеры сам не читал пока что. Там форматирования, кстати, нет. phomm Цитата:
Цитата:
s-andriano Цитата:
Кстати, работа будет выполняться в ФриПаскаль Последний раз редактировалось Вадим Мошев; 05.05.2013 в 22:56. |
|||
![]() |
![]() |
![]() |
#9 | |||||
Белик Виталий :)
Старожил
Регистрация: 23.07.2007
Сообщений: 57,097
|
![]() Цитата:
Цитата:
Цитата:
Цитата:
Цитата:
I'm learning to live...
Последний раз редактировалось Stilet; 05.05.2013 в 23:05. |
|||||
![]() |
![]() |
![]() |
#10 | ||
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
![]() Цитата:
Цитата:
Нечто подобное есть функциональных языках, но там это навеяно функциональным стилем. ЗЫ, Код:
Код:
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика ![]() Последний раз редактировалось Utkin; 06.05.2013 в 07:41. |
||
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Конструкторы и деструкторы | Qwoort | Общие вопросы C/C++ | 2 | 18.06.2012 09:17 |
Конструкторы и деструкторы | programmm | Помощь студентам | 0 | 04.06.2011 16:33 |
Конструкторы и деструкторы | @arkadii | Общие вопросы C/C++ | 2 | 10.11.2010 17:40 |
С++ и С# Конструкторы и Деструкторы | exKenny | Помощь студентам | 1 | 27.04.2010 12:32 |