Форум программистов, компьютерный форум CyberForum.ru

Понятия инкапсуляции, полиморфизма и наследования - C++

Восстановить пароль Регистрация
 
 
Рейтинг: Рейтинг темы: голосов - 41, средняя оценка - 4.95
el_gato_de_Ch
35 / 35 / 1
Регистрация: 28.04.2013
Сообщений: 110
31.01.2014, 21:46     Понятия инкапсуляции, полиморфизма и наследования #1
Всем привет. Прошу прояснить для себя 3 основных свойства парадигмы ООП инкапсуляцию, наследования и полиморфизм. Я напишу своё видение и живой пример, как эта парадигма притворена в жизнь, хочу знать правильны ли мои суждения или нет.

Инкапсуляция - это скрытие реализации.
Пример из реальной жизни: У нас есть объект - домашний стационарный телефон, у которого есть функция "позвонить(номер телефона)" пользователю, не обязательно знать, как коммутируются каналы, как "летают" электроны внутри, он пользуется готовой функцией.
Пример из программирования: private поля класса.

Наследование - возможность объекта иметь потомков, которые имеют расширенный интерфейс.
Пример: Класс - домашний телефон, класс наследник - мобильный телефон с функцией позвонить, и отправить СМС.

Полиморфизм - присваивание действию одного имени разным объектам в иерархии, чтобы потом каждый объект пользовался этим действием, так как угодно именно ему.
Пример из жизни: Расход бензина у различных автомобилей будет рассчитываться по разному в зависимости от количества электроники, которой напичкана машина. (полиморфизм методов).
Телефон стационарный кнопочный, телефон мобильный сенсорный, поля циферблат будут иметь разные типы в первом случае - МатрицаКнопок, во втором случае - СенсорнаяКлавиатура. (Полиморфизм полей класса)

Пример из программирования: перегрузка функций (методов класса наследника), одни и те же поля класса наследника могут иметь различный тип.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.01.2014, 21:46     Понятия инкапсуляции, полиморфизма и наследования
Посмотрите здесь:

C++ Использование полиморфизма
C++ Реализация полиморфизма
C++ иллюстрация полиморфизма
C++ Провете класс на предмет ошибок инкапсуляции
C++ Обход инкапсуляции класса
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,051
01.02.2014, 19:17     Понятия инкапсуляции, полиморфизма и наследования #21
Цитата Сообщение от el_gato_de_Ch Посмотреть сообщение
а разве наследование не предполагает, расширение интерфейса базового класса?
я не знаю как там по научному, для меня нет
наоборот у наследника может идти упрощение
в смысле внутри может и побольше будет
а снаружи нет
например
C++
1
2
3
4
5
6
class square : public rectangle
{
public square(int a);
}
square :square (int a) :rectangle(a,a)
{};
все остальное от прямоугольника
какие свойства есть у квадрата которых нет у прямоугольника?
а вот если наоборот
то придется переписывать расчет площади, периметра
вводить еще одну сторону, причем не понятно что считать шириной а что высотой
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Avazart
 Аватар для Avazart
6903 / 5143 / 253
Регистрация: 10.12.2010
Сообщений: 22,617
Записей в блоге: 17
01.02.2014, 19:44     Понятия инкапсуляции, полиморфизма и наследования #22
Цитата Сообщение от rrrFer Посмотреть сообщение
Если прочитать все внимательно, а не только выделенный вывод в конце - то можно заменить, что все не так гладко.
Это очень коротко изложенное содержание статьи по ссылке korvin_-а
Это не изложение статьи, это короткая цитата из книги Мейерса
Лично мне больше понравился пример "птица/пингвин", описанный до разбора примера "прямоугольник/квадрат"

А выделенный текст касался слов:
Цитата Сообщение от rrrFer
Мне кажется, Саттер одобрил бы наследование

Цитата Сообщение от rrrFer Посмотреть сообщение
Может и у Мейерса, но я Саттера читал.
Странно чет у Саттера не помню такого, может книга другая, можете указать на место в книге ?


Цитата Сообщение от ValeryS Посмотреть сообщение
точка есть окружность с нулевым радиусом
Не это не правильно, по крайней мере с математической точки зрения.
Точка в математике не может иметь радиус, и странно будет если радиус появится в интерфейсе класса точки.

Другое дело подходить с точки зрения реализации то можно, реализовать точку посредством окружности.
(C помощью композиции, а не наследования)


Добавлено через 5 минут
Цитата Сообщение от ValeryS Посмотреть сообщение
это я к тому что проектирования наследования не так просто как кажется на первый взгляд
Выясни нужный интерфейс, выдели общие черты моделируемых объектов, и сложности отпадут сами.
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,051
01.02.2014, 19:50     Понятия инкапсуляции, полиморфизма и наследования #23
Цитата Сообщение от Avazart Посмотреть сообщение
Точка в математике не может иметь радиус.
ну а нулевой радиус это не отсутствие радиуса?

а в программировании точку лучше вообще вынести за иерархию, по моему, никакой функциональности она не несет, а проблем добавит
например еще можно от точки наследовать круг(окружность) добавив радиус и весь функционал
где точка будет центром
а как наследовать эллипс у которого два центра?

Добавлено через 1 минуту
Цитата Сообщение от Avazart Посмотреть сообщение
Выясни нужный интерфейс, выдели общие черты моделируемых объектов,
это ты мне объясняешь?
у меня то сложностей как раз нет
а у начинающих есть именно в выяснении интерфейса и общих черт
Avazart
 Аватар для Avazart
6903 / 5143 / 253
Регистрация: 10.12.2010
Сообщений: 22,617
Записей в блоге: 17
01.02.2014, 20:02     Понятия инкапсуляции, полиморфизма и наследования #24
Цитата Сообщение от ValeryS Посмотреть сообщение
ну а нулевой радиус это не отсутствие радиуса?
Да и что на это скажет пользователь кода ?

Цитата Сообщение от ValeryS Посмотреть сообщение
а в программировании точку лучше вообще вынести за иерархию
А кто ее туда помещал, это лишь возможный объект для компоновки.

Цитата Сообщение от ValeryS Посмотреть сообщение
а как наследовать эллипс у которого два центра?
А нефиг лепить все в кучу.
Единственно что тут можно сделать выделить общего предка с общим интерфейсом.
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,051
01.02.2014, 20:05     Понятия инкапсуляции, полиморфизма и наследования #25
Цитата Сообщение от Avazart Посмотреть сообщение
Да и что на это скажет пользователь кода ?
в смысле???
C++
1
2
3
4
5
6
7
class Point : public Circle
{
public:
 Point( int x,int y):
...................................
 
Point::Point(int x, int y) : Circle(x,y,0)
Но это так к слову
я же говорил я бы вывел точку из иерархии
нет у неё свойств

Добавлено через 1 минуту
Цитата Сообщение от Avazart Посмотреть сообщение
А нефиг лепить все в кучу.
Единственно что тут можно сделать выделить общего предка с общим интерфейсом.
ну я и говорю
эллипс- окружность- точка
более логично чем наоборот
Dmitriy_M
1294 / 1175 / 104
Регистрация: 20.03.2009
Сообщений: 4,210
Записей в блоге: 11
01.02.2014, 20:10     Понятия инкапсуляции, полиморфизма и наследования #26
Цитата Сообщение от Avazart Посмотреть сообщение
зачем ?
Через пол года-год, ты уже не вспомнишь как работает твоя программа.
Цитата Сообщение от Avazart Посмотреть сообщение
Другое дело что не всегда можно провести эту аналогию, без ущерба в реализации.
Никакая аналогия не поможет, когда хреново проименованы классы и функции.

Цитата Сообщение от el_gato_de_Ch Посмотреть сообщение
а разве наследование не предполагает, расширение интерфейса базового класса?
Нет.

Цитата Сообщение от el_gato_de_Ch Посмотреть сообщение
тогда получается, что проще всего базовым классом взять надо квадрат, потому что у него всего 1 угол и одна сторона и от него уже отнаследовать четырёхугольник, добавив ещё 3 поля для длин сторон и 3 поля для углов
Нельзя. Наследник так же будет квадратом, а значит нельзя менять соотношение сторон.
Avazart
 Аватар для Avazart
6903 / 5143 / 253
Регистрация: 10.12.2010
Сообщений: 22,617
Записей в блоге: 17
01.02.2014, 20:22     Понятия инкапсуляции, полиморфизма и наследования #27
Цитата Сообщение от ValeryS Посмотреть сообщение
в смысле???
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
class Circle
{
  public:
    // ...
     int getRadius()const;
     void setRadius(int R);
}
 
class Point : public Circle
{
public:
  /*  Нафига пользователю акцессоры радиуса ? */
}
Правильнее:
C++
1
2
3
4
5
6
7
8
9
10
class Circle
{
  public:
     // ...
     int getRadius()const;
     void setRadius(int R);
  private:
     Point center_;
     int r_;
}
Цитата Сообщение от ValeryS Посмотреть сообщение
ну я и говорю
эллипс- окружность- точка
более логично чем наоборот
Нет, создать абстрактный класс, от него наследовать перечисленные ...
В зависимости от конечной цели определить виртуальные методы, например drow(), getCenter(), moveTo().
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,051
01.02.2014, 20:25     Понятия инкапсуляции, полиморфизма и наследования #28
Цитата Сообщение от Avazart Посмотреть сообщение
Правильнее:
Цитата Сообщение от Avazart Посмотреть сообщение
Point center_;
ну а я про что?
Цитата Сообщение от ValeryS Посмотреть сообщение
я бы вывел точку из иерархии
ну никаким боком она к кругу(окружности)
используется? да
является наследником/родителем? нет
но ежли кому вздумается встроить её в иерархию то лучше уж из круга, чем наоборот

встречались мне на просторах интернета лекции,в которых утверждалось что точка базовый класс и из него растут все фигуры
Kuzia domovenok
 Аватар для Kuzia domovenok
1883 / 1738 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
01.02.2014, 20:28     Понятия инкапсуляции, полиморфизма и наследования #29
rrrFer, вот именно! Когда мы применяем ООП мы в первую очередь следуем определённому набору принципов, как напр. ты сказал: "всё, что применимо к базовому должно быть применимо к производному" и многие другие. То есть принципы всё же стоят впереди, а аналогии с реальностью вы подгоняете под них.
Однако найти такие аналоги можно для любой парадигме, особенно если она близка тебе как программисту, часто тобой применяется.
Но, говоря о том, что к ООП не применима аналнгия с жизнью, я хотел прежде всего обратить на это внимание ТС и всех начинающих программистов. Ведь как будет мыслить человек, которому ничего об ООП не рассказали кроме определения из словаря? Которому сказали: "задавай как в жизни!" ?
Он начнёт задавать объекты именно в сответствие с тем, что ему самому взбрело вложить в это понятие: будет наследовать круг от точки, квадрат от прямоугольника...
В отдельных случаях (и я встречал такие в вопросах на форуме) новички понимают объекты в самом буквальном смысле: "это когда открыл редактор форм и мышкой понаставил ОБЪЕКТОВ!", т.е. ООП для человека, не задумывающегося об этих ваших абстракциях звучит как "моделирование"! Само собой, если б это было так, ни о каком полиморфизме и речи б не шло. Наоборот, мы бы сотни объектов в погоне за "моделью мира".

Отсюда вывод: не надо путать причину со следствием. Можно решать в первую очередь проблемы своего приложения: выделять в нём подсистемы, обобщать для них интерфейсы... И пусть при этом очень возможно какие-то классы у вас и будут позаимствованы из реальности... Но это не значит, что ООП это "моделирование". Если б это было так, ни о каком полиморфизме и речи бы не было! Наоборот, мы бы создавали сотни объектов в погоне за "моделью мира"!
Avazart
 Аватар для Avazart
6903 / 5143 / 253
Регистрация: 10.12.2010
Сообщений: 22,617
Записей в блоге: 17
01.02.2014, 20:30     Понятия инкапсуляции, полиморфизма и наследования #30
Цитата Сообщение от ValeryS Посмотреть сообщение
ну никаким боком она к кругу(окружности)
используется? да
Отношение "реализуется посредством" (хотя конечно для таких простых классов звучит преувеличено)
ValeryS
Модератор
6377 / 4843 / 442
Регистрация: 14.02.2011
Сообщений: 16,051
01.02.2014, 20:36     Понятия инкапсуляции, полиморфизма и наследования #31
Цитата Сообщение от Avazart Посмотреть сообщение
Отношение "реализуется посредством"
звучит красиво
лучше чем просто член класса
Avazart
 Аватар для Avazart
6903 / 5143 / 253
Регистрация: 10.12.2010
Сообщений: 22,617
Записей в блоге: 17
01.02.2014, 20:54     Понятия инкапсуляции, полиморфизма и наследования #32
Цитата Сообщение от ValeryS Посмотреть сообщение
звучит красиво
лучше чем просто член класса
В данном случае да, но смысл может проявится, если к примеру сделать не просто объектом класса а указателем на него, и допустить что есть несколько типов точек, например точка которая рисуется не просто квадратиком(пикселем), а например крестиком или жирной точкой в несколько пикселей.И все это в виде отдельной иерархии.

C++
1
2
3
4
5
6
7
8
9
10
11
12
13
class Circle
{
     public:
        virtual void draw()const;
     private:
        AbstractPoint* center_; // SimplePoint,  CrossPoint, BoldPoint
}
 
Circle::draw()const
{
   // какие то действия для рисования самой окружности
   center->draw(); // рисуем центр
}
Но естественно лучше пример в книге Майерса где на основе класса std::list<> реализуется свой класс Set<> и поясняется почему не подходит наследование.
rrrFer
Заблокирован
02.02.2014, 09:41     Понятия инкапсуляции, полиморфизма и наследования #33
Цитата Сообщение от Avazart Посмотреть сообщение
Странно чет у Саттера не помню такого, может книга другая, можете указать на место в книге ?
Книга "Стандарты программирования на С++". Номера "правил" я указывал.

Цитата Сообщение от Avazart Посмотреть сообщение
Точка в математике не может иметь радиус, и странно будет если радиус появится в интерфейсе класса точки.
Другое дело подходить с точки зрения реализации то можно, реализовать точку посредством окружности.
Цитата Сообщение от ValeryS Посмотреть сообщение
встречались мне на просторах интернета лекции,в которых утверждалось что точка базовый класс и из него растут все фигуры
Холиваров не избежать. Причина, наверное, в хитрых словах типа "является", "реализуется посредством" и т.п. Понимать их можно по-разному. Если все эти слабоформализованные термины скрестить с математикой (где все бесконечно), то получится каша.

Если в моей программе квадрат является видом прямоугольника - то я и буду открыто наследовать. Если не является - не буду. Всякий матан тут вообще не при чем. С точками, пингвинами и прочим - аналогично.

Не по теме:

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



И вообще, изначально ТС хотел найти аналогии из жизни. Вот тут взяли "точку" и мусолят ее. Одни говорят, что окружность - множество точек. Другие - что квадрат - это 4 отверзка, а отрезок - множество точек. Третьи думают о точке на мониторе. Четвертые - о точке на бумаге. Пятые - о точке в пространстве (не двумерном). Шестые смотрят на точку, как на окружность нулевого радиуса.
У каждого тут своя точка. Зачем спорить то? - примера из жизни для ТС не получилось. Если в результате спора выйдет точка - то она будет совсем абстрактной )
Avazart
 Аватар для Avazart
6903 / 5143 / 253
Регистрация: 10.12.2010
Сообщений: 22,617
Записей в блоге: 17
02.02.2014, 12:21     Понятия инкапсуляции, полиморфизма и наследования #34
Цитата Сообщение от rrrFer Посмотреть сообщение
Холиваров не избежать. Причина, наверное, в хитрых словах типа "является", "реализуется посредством" и т.п. Понимать их можно по-разному. Если все эти слабоформализованные термины скрестить с математикой (где все бесконечно), то получится каша.
Каша может быть в голове. В математике и других областях на которые следует опираться при моделировании все давно разложено по полочкам.
Описанная проблема с квадратом вызвана как раз тем что потребовалась операция увеличения площади,
которая не вписывается в математические знания, а значит не и модель не соответствует нашим ожиданиям, интуиции.

Цитата Сообщение от rrrFer Посмотреть сообщение
Одни говорят, что окружность - множество точек. Другие - что квадрат - это 4 отверзка, а отрезок - множество точек.
Множество точек это не точка, наследование неуместно.
Но никто не запрещает реализовать окружность множеством точке, а прямоугольник множеством линий.
Более того реализация не так важна, важно то какой интерфейс мы предоставляем пользователю.

Цитата Сообщение от rrrFer Посмотреть сообщение
Пятые - о точке в пространстве (не двумерном). Шестые смотрят на точку, как на окружность нулевого радиуса.
У каждого тут своя точка. Зачем спорить то? - примера из жизни для ТС не получилось. Если в результате спора выйдет точка - то она будет совсем абстрактной )
Насчет того почему точка не является окружностью нулевого радиуса я уже говорил.
То что у каждого "своя точка" это результат того что применения может быть разным.
Разрабатывая класс нужно представлять как и где его будут применять. (соответственно и результат разный в зависимости от применения)
А примеры из книг почти всегда абстрактны.
Kuzia domovenok
 Аватар для Kuzia domovenok
1883 / 1738 / 116
Регистрация: 25.03.2012
Сообщений: 5,907
Записей в блоге: 1
02.02.2014, 13:02     Понятия инкапсуляции, полиморфизма и наследования #35
Avazart, ну так ты своими примерами кругов только доказываешь мою позицию!
Один и тот же Объект можно представить абсолютно по-разному.
Не все из этих представлений применимы на практике.
Не все из этих представлений подходят под каноны ООП.
Следовательно, на вопрос ТС ответ нет, объекты ООП не моделируют реальный мир, а лишь упрощают для программиста работу: позволяют эффективнее разбивать задачу на подсистемы, использовать в задаче проверенные наработки.
rrrFer
Заблокирован
02.02.2014, 13:19     Понятия инкапсуляции, полиморфизма и наследования #36
Цитата Сообщение от Avazart Посмотреть сообщение
Описанная проблема с квадратом вызвана как раз тем что потребовалась операция увеличения площади,
которая не вписывается в математические знания, а значит не и модель не соответствует нашим ожиданиям, интуиции.
Если прямоугольник будет задаваться двумя точками - левым и правым углами, а интерфейс будет позволять изменить высоту и ширину - вас не должно испугать то, что с шириной изменяются координаты.
Какие именно координаты изменятся? - у каждого свои ожидания - прямоугольник может вырасти как влево, так и в право, но может и в обоих направлениях.

Дак почему в этом случае вы будете утверждать, что модель соответствует ожиданиям, а если при изменении ширины изменится высота квадрата - не соответствует?

В одном случае при изменении ширины меняются координаты, в другом - высота.

Я уже писал, что в математике вообще нет никаких операций над квадратами и прямоугольниками. Это Ваши личные ожидания (в изменении площади).
Интерфейс квадрата зависит от контекста, в котором он используется. Ожидания должны зависеть от контекста тоже.

Цитата Сообщение от Avazart Посмотреть сообщение
Множество точек это не точка, наследование неуместно.
Я не предлагал ничего наследовать, я уже десятый раз предлагаю отойти от определений и посмотреть на контекст. Вы говорите про дверную ручку, другой - про шариковую, третий - про ручку дамы.
Цитата Сообщение от Avazart Посмотреть сообщение
Но никто не запрещает реализовать окружность множеством точке, а прямоугольник множеством линий.
Окружность - это бесконечное множество точек. Точка - это нечто бесконечно малое. Луч - это что-то бесконечно узкое и бесконечно длинное. Математика оперирует предельными значениями, компьютер так не умеет. Мир у нас тоже не цифровой, поэтому, возвращаясь к САБЖу, ООП - не инструмент описания картины мира, да?

Есть философские игры на тему яйца и курицы. Между ними (яйцом и курицей) есть связь, это очевидно. Но какая именно - определить трудно, а выражать это в терминах ООП (что пытается сделать ТС) вообще бессмысленно.

Не по теме:

Мне года пол назад кто-то тут поставил диагноз "ООП головного мозга", дак вот всем отписавшимся в теме сообщаю - вы тоже больны xD.

Avazart
 Аватар для Avazart
6903 / 5143 / 253
Регистрация: 10.12.2010
Сообщений: 22,617
Записей в блоге: 17
02.02.2014, 13:41     Понятия инкапсуляции, полиморфизма и наследования #37
Цитата Сообщение от Kuzia domovenok Посмотреть сообщение
Avazart, ну так ты своими примерами кругов только доказываешь мою позицию!
Один и тот же Объект можно представить абсолютно по-разному.
Не все из этих представлений применимы на практике.
Не все из этих представлений подходят под каноны ООП.
Ну так не нужно пытаться писать решение на все случаи жизни и не будет каши в голове.
Решайте конкретную задачу (+расчет на будущее) и все будет нормально.

Возможность применения зависит напрямую от того насколько вы точно определили задачу т.е составили модель. ("модель мира" не "сам мир" это его упрощение, выделение только важных для нашей задачи вещей, вспомните уроки физики, изучая гравитацию мы сознательно пренебрегаем сопротивление воздуха, или вспомним модель атома: Резерфорда,Бора)

Цитата Сообщение от rrrFer Посмотреть сообщение
Дак почему в этом случае вы будете утверждать, что модель соответствует ожиданиям, а если при изменении ширины изменится высота квадрата - не соответствует?
В одном случае при изменении ширины меняются координаты, в другом - высота.
Прочитайте всю задачу из книги.
Не соответствует или может не соответствует по тому как площадь квадрата(с помощью ф-ции) увеличивается на значительно большую величину нежели прямоугольник.
Хотя конечно и это можно продумать и поправить, но для этого придется лезть в ф-цию.
Kuzia domovenok
02.02.2014, 13:49
  #38

Не по теме:

Ну о чём спор?! Все какие-то примеры приводят... Вот мой: Один и тот же предмет можно представить и как материальную точку, и как абсолютно твёрдое тело, и как количество вещества...
Бла-бла-0 Бл@! Да я какой-то школьный учебник вспомнил!

aLarman
02.02.2014, 14:04
  #39

Не по теме:

ребят,а Вам не надоело? развести "срач" среди программистских понятий из-за кинутой на обсуждение темы, кто как понял пусть так и программирует, нечего человека и др людей вводить в заблуждения, порожденные собсвственной "призмой" восприятия реальности.
Что вообще есть знание? это истинное знание пропущенное через призму заблуждений, жизненного опыта и т.д. и у каждого человека эта призма. Так что навязывать человеку свою мысль, это практически бессмысленно, ибо он его опять же воспримет по-своему. И вообще как сказал Сократ - "Я знаю что я ничего не знаю и это все что я знаю" (не точная цитата и нечего поправлять меня)

MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
02.02.2014, 14:16     Понятия инкапсуляции, полиморфизма и наследования
Еще ссылки по теме:

чем отличаются структуры для наследования интерфейса, от структур, для наследования реализаций C++
C++ Об инкапсуляции данных в ООП
Виды полиморфизма C++ C++

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
Avazart
 Аватар для Avazart
6903 / 5143 / 253
Регистрация: 10.12.2010
Сообщений: 22,617
Записей в блоге: 17
02.02.2014, 14:16     Понятия инкапсуляции, полиморфизма и наследования #40
Цитата Сообщение от rrrFer Посмотреть сообщение
Я не предлагал ничего наследовать, я уже десятый раз предлагаю отойти от определений и посмотреть на контекст. Вы говорите про дверную ручку, другой - про шариковую, третий - про ручку дамы.
Цитата Сообщение от rrrFer Посмотреть сообщение
Окружность - это бесконечное множество точек. Точка - это нечто бесконечно малое. Луч - это что-то бесконечно узкое и бесконечно длинное. Математика оперирует предельными значениями, компьютер так не умеет. Мир у нас тоже не цифровой, поэтому, возвращаясь к САБЖу, ООП - не инструмент описания картины мира, да?
И где тут контекст? Для решение определенных задач достаточно ограничится определенный количеством точек что бы получить необходимую точность в решении конкретной задачи и конкретного контекста.
Еще раз модель мира не сам мир.
Кто-то рисует портреты а кто-то карикатуры, и то и то искусство.
Yandex
Объявления
02.02.2014, 14:16     Понятия инкапсуляции, полиморфизма и наследования
Ответ Создать тему
Опции темы

Текущее время: 21:35. Часовой пояс GMT +3.
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2016, vBulletin Solutions, Inc.
Рейтинг@Mail.ru