Форум программистов «Весельчак У»
  *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

  • Рекомендуем проверить настройки временной зоны в вашем профиле (страница "Внешний вид форума", пункт "Часовой пояс:").
  • У нас больше нет рассылок. Если вам приходят письма от наших бывших рассылок mail.ru и subscribe.ru, то знайте, что это не мы рассылаем.
   Начало  
Наши сайты
Помощь Поиск Календарь Почта Войти Регистрация  
 
Страниц: [1]   Вниз
  Печать  
Автор Тема: Что есть класс и что есть объект?  (Прочитано 16279 раз)
0 Пользователей и 3 Гостей смотрят эту тему.
Olegator
Команда клуба

ru
Offline Offline
Пол: Мужской

« : 22-03-2005 22:52 » 

Разъясните, что есть что.
Дайте сначала чёткие, принципиальные формулировки и только потом примеры.
Хотя можно и без примеров. Самое главное точные, чёткие, принципиальные определения!!!
« Последнее редактирование: 22-03-2005 23:29 от Olegator » Записан
Михалыч
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #1 : 23-03-2005 04:30 » 

Мне кажется, что не удастся найти 100%-окончательное  и для всех одинаковое определение термина, но вот одно из возможных:
Класс – это определяемый пользователем абстрактный тип данных, представляющий собой модель реального объекта в виде данных и функций для работы с этими данными.
А вот цитата от Страуструпа
Цитата
Все объекты реального мира можно было бы разделить на категории, например, оживленные объекты и неоживленные. Оживленные – передвигаются, выполняют какие-то действия. Неоживленные объекты – это своего рода,  окружение оживленных объектов. Несмотря на столь существенную разницу между объектами этих категорий, они имеют нечто общее. Объекты имеют атрибуты: размер, цвет, форму, вес и т.п. Они проявляют какое-то поведение: мяч катится, подпрыгивает, скачет и т.д. Человек идет, стоит, радуется, работает, спит и т.д. Автомобиль – разворачивается, тормозит, поворачивает и т.д. Мы узнаем об объектах путем их изучения, наблюдения за ними и выясняем, что разные объекты могут иметь много одинаковых атрибутов и представлять похожие черты поведения: взрослые и дети, люди и шимпанзе, легковые автомобили, грузовики и роликовые коньки. Таки объекты имеют много общего. Так вот когда можно выделит объекты, имеющие одинаковые характеристик говорят о классе. Например, класс средств передвижения. Класс содержит данные, которые описывают атрибуты класса и функции, которые реализуют поведение класса. Когда программист описывает класс он фактически вводит новый тип данных. Точно так же, как экземпляр любого встроенного типа (например, int) называется переменной, экземпляр определенного пользователем типа (т.е. класса), называется объектом или экземпляром класса. Класс для объекта, это то же самое, что проект для дома. Можно построить много домов по одному проекту. Аналогично, можно реализовать много объектов из одного класса.
Есть неплохая книга Г.Буча  "Объектно - ориентированный анализ и проектирование с примерами приложений на С++" Настоятельно рекомендую, избавляет от многих вопросов. Если старательно поискать, может найдешь в сети. Раньше точно была (года 2 назад сам качал, потом купил).
Пример из жизни - пожалуйста. Есть класс "средства передвижения", если его рассматривать, как один из "родительских" классов в верху иерархии, то его объектом может быть твой велосипед (если он у тебя есть, причем именно твой кокретный велик, а не велик "вообще", это был бы класс). Мой "родной и глубоко любимый" автомобиль Audi 80, на котором я езжу, есть объект класса "автомобили"... Ну и так далее, примеров вокруг бесконечное количество.
« Последнее редактирование: 23-03-2005 04:35 от Михалыч » Записан

Поживем - увидим... Доживем - узнаем... Выживу - учту  Улыбаюсь
Migmile
Помогающий

ru
Offline Offline

« Ответ #2 : 24-03-2005 16:03 » 

Ну а если без определений, то:
класс - "homo sapiense" - общие признаки  (2 руки, 2 ноги, 1 кочан + куча глупостей и амбиций)
объект - Маша, Миша, Катя, Фрэд, ...
Записан
Михалыч
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #3 : 24-03-2005 16:38 » new

 Отлично Отлично Отлично Отлично
А так же не только хомо сапиенс, но и любой гамадрилус...
« Последнее редактирование: 24-03-2005 16:39 от Михалыч » Записан

Поживем - увидим... Доживем - узнаем... Выживу - учту  Улыбаюсь
Migmile
Помогающий

ru
Offline Offline

« Ответ #4 : 24-03-2005 16:40 » 

Отлично Отлично Отлично Отлично
А так же не только хомо сапиенс, но и любой гамадрилус...
Ну у  гамадрилусов амбиций не меньше, а вот глупостей, думается, поменьше будет:-D
Записан
Allex63
Участник

ru
Offline Offline
Пол: Мужской

« Ответ #5 : 25-03-2005 10:18 » 

Ну а если без определений, то:
класс - "homo sapiense" - общие признаки  (2 руки, 2 ноги, 1 кочан + куча глупостей и амбиций)
объект - Маша, Миша, Катя, Фрэд, ...

Извините, но Маша, Миша, Катя, Фрэд, .- это экземпляры(представители) класса Homio (про Sapiens не уверен).
Записан

Мысли должны быть короткие и плоские.
Так их в ROM больше помещается.
xelos
Гость
« Ответ #6 : 25-03-2005 10:40 » 

объект это конкретная реализация класса... Если класс описывает данные, то объект их реализует... для одного класса можно создать множество объектов - тогда они все будут соответствовать описанию, заданному классом, однако каждый конкретный объект реализует свои данные (в самом простом случае - различные значения переменных)...
Записан
Sla
Модератор

ua
Offline Offline
Пол: Мужской

WWW
« Ответ #7 : 25-03-2005 13:17 » 

Цитата: xelos
... для одного класса можно создать множество объектов
на базе одного класса можно создать множество объектов, imho
Записан

Мы все учились понемногу... Чему-нибудь и как-нибудь.
xelos
Гость
« Ответ #8 : 25-03-2005 13:23 » 

угу, смысл в том - что класс описание данных, а объект - конкретная реализация этих данных, причем реализаций может быть множество
Записан
Михалыч
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #9 : 25-03-2005 17:24 » 

Извините, но Маша, Миша, Катя, Фрэд, .- это экземпляры(представители) класса Homio (про Sapiens не уверен).
А чем, собственно таким особенным экземпляры отличаются от объектов в данном контексте ?
Записан

Поживем - увидим... Доживем - узнаем... Выживу - учту  Улыбаюсь
Olegator
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #10 : 25-03-2005 20:26 » 

Т.е. объект - это всё что или кто угодно.
А класс это тип объекта. Это разграничение этих объектов по каким либо признакам.
Т.е. как в учебнике по биологии.

Но в отношении экземпляров я запутался.
Записан
Olegator
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #11 : 25-03-2005 20:28 » 

И ещё вопрос.
У класса могут быть подклассы?
Записан
nikedeforest
Команда клуба

ru
Offline Offline
Пол: Мужской

« Ответ #12 : 25-03-2005 21:02 » 

Цитата
Но в отношении экземпляров я запутался.
объект - экземпляр класса. Есть класс "люди", а ты ,olegator, экземпляр этого класса, я тоже экземпляр этого класса. Не надо разделять объект и экземпляр класса.
Цитата
У класса могут быть подклассы?
Извени, не совсем понял. У класса могут быть потомки.
классы-Потомки - это классы, которые имеют свои свойства и признаки и которые при этом наследуют свойства и признаки классов-предков (своих предков).
Боюсь дать какой-нибудь правильный пример, но про наследование свойств предков можно сказать как ты, я и многие другие наследовали свойства (внешность) и характер своих родителей. 
Надеюсь я тебя не запутал.
Записан

ещё один вопрос ...
Allex63
Участник

ru
Offline Offline
Пол: Мужской

« Ответ #13 : 28-03-2005 10:32 » 

У класса могут быть подклассы?

Что имеется в виду?
Класс имеет полное право содержать в своих данных ссылку на другой класс (представителя его). Например, у TLabel есть property Font:TFont.

Класс может быть пронаследован от другого класса. Одного (Delphi-модель) или нескольких (C++).

Класс может исполнять разные методы в зависимости от внутреннего состояния, и ВЫГЛЯДЕТЬ по разному.
-----------------------------------

Насчет "объектов" и "экземпляров". "Объект" - слово многозначное. Первое значение - ЧТО-ТО-ТАКОЕ-ВООБЩЕ, короче - абстракция от "всего сущего". Второе значение - та область в оперативной памяти, которая сформирована по "описанию класса".  Чтобы не было неоднозначностей, предпочитаю эту область памяти называть "Экземпляром". И Вам советую.
 Улыбаюсь
Записан

Мысли должны быть короткие и плоские.
Так их в ROM больше помещается.
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #14 : 28-03-2005 19:58 » 

Подклассы могут быть (если под подклассом понимается определение класса внутри существующего)

Код:
class CMyClass
{
private:
class CMySubClass
{
public:
CMySubClass(){}
~CMySubClass() {}
void MySubClassFunction();
private:
int m_nMySubClassData;
};
public:
CMyClass();
virtual ~CMyClass();
void MyClassFunction();
private:
int m_nMyClassData;
}

зы Сорри за приведённый код. Я понимаю, что начинающим лучше общими понятиями. Но с таковыми проблема. Может народ переведёт?
« Последнее редактирование: 28-03-2005 20:51 от Джон » Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
EvilsInterrupt
Гость
« Ответ #15 : 20-05-2005 07:57 » 

Авторы трэда:

Человеку свойственно понимать, что-то не благодаря увиденному а через словесное объяснение. Даже когда человек хочет сказать другому об чем либо он говорит словом! К примеру если кто-то тебе
скажет, что ты вчера кушал, ты же не пойдешь в столовую за реальным и физическим пильменем, ты просто скажешь слово "пильмень", а у человека в эту минуту тут же породится в голове объект и он поймет о чем идет речь, он увидит этот  пильмень!!! Абстактно конечно,но увидит!

Теперь че такое класс, я предлагаю тебе раличать описание класса, определение, и объект порожденного от класса.

Почему:
К примеру, бог описал стандартный класс: "человек" и сказал что человек, имеет руки,ноги,голову, и как нестранно жопу!!! - под этим он всего лишь дал понять другой личности, что он понимает под понятием "человек". Теперь же он говорит что человек умеет думать, ходить, матом ругаться и т.д. теперь он определил человека, что подчеркнет индивуальность понятия "человек". Он дал этот своего  рода "чертеж" твоей маме и папе и они под покровом ночи породили объект от понятия "человек" ТЕБЯ!  Ты уникален , у тебя свои руки, свои ноги, теперь если даже бог даст другим людям такой же "чертеж" для порождения нового объекта, то у тебя у него не будет общих рук,ног и даже жопа у каждого будет своя!!!

Если интересно, я могу дать тебе понять как все это понимает процессор и как это все выглядит на уровне языка ассемблера! Но думаю не стоит, этого вполне достаточно для понимания концепции класса, но не достаточно для его философии!!!
Записан
Джон
просто
Администратор

de
Offline Offline
Пол: Мужской

« Ответ #16 : 20-05-2005 14:51 » 

EvilsInterrupt,

Цитата
Человеку свойственно понимать, что-то не благодаря увиденному а через словесное объяснение.

Ну эт ты загнул. Приведённый пример противоречит данному высказыванию. Именно потому, что он этот пЕльмень уже когда-то видел, он и может себе его представить.  Или лучше сказать, он представит себе когда-то увиденный им пЕльмень. Т.е. в данном случае происходит поиск уже введённой (в данном случае визуальным и органолептическим методом) когда-то информации, по ключевому слову "пЕльмень". Как ты думаешь, поймёт тебя какой-нибудь австралийский абориген, если ты ему скажешь, что ты поел в столовой?

Вот, например, какое определение пЕльменей стоит в толково-словообразовательном словаре:

Цитата
   ПЕЛЬМЕНИ мн.

      1. Кулинарное изделие в виде маленьких пирожков из пресного теста
         с мясной (реже рыбной или овощной) начинкой.

      2. Кушанье из таких изделий, приготовляемое в процессе варки.

Вот и попробуй человеку, который никода пЕльменей и в глаза не видел объяснить, что это такое.
Не сможет он их себе представить. Даже абстрактно. Даже если ты объяснишь ему из чего он состоит и как он выглядит. Он представит себе всё, что угодно, но не пЕльмень.
Ну и "добивательный" аргумент - если брать всё те же пЕльмени в качестве примера, то есть ещё такие параметры как вкус и запах, которые словами передать ну очень затруднительно. Ага
Так что одними словами не обойдёшься. Поэтому (чаще всего так это и происходит) гораздо быстрее взглянуть на код, что-бы найти ошибку, или понять как он работает, чем выслушивать долгие объяснения на тему "Что я хотел сделать".

Цитата
Если интересно, я могу дать тебе понять как все это понимает процессор и как это все выглядит на уровне языка ассемблера! Но думаю не стоит, этого вполне достаточно для понимания концепции класса, но не достаточно для его философии!!!

Я не понял - чего "ЭТОГО" достаточно? Но переход от жопы к ассемблеру мне понравился. Улыбаюсь
Записан

Я вам что? Дурак? По выходным и праздникам на работе работать. По выходным и праздникам я работаю дома.
"Just because the language allows you to do something does not mean that it’s the correct thing to do." Trey Nash
"Physics is like sex: sure, it may give some practical results, but that's not why we do it." Richard P. Feynman
"All science is either physics or stamp collecting." Ernest Rutherford
"Wer will, findet Wege, wer nicht will, findet Gründe."
Страниц: [1]   Вверх
  Печать  
 

Powered by SMF 1.1.21 | SMF © 2015, Simple Machines