Показать сообщение отдельно
Старый 03.01.2013, 17:08
wvxvw вне форума Посмотреть профиль Отправить личное сообщение для wvxvw Найти все сообщения от wvxvw
  № 10  
Ответить с цитированием
wvxvw
Modus ponens
 
Аватар для wvxvw

модератор форума
Регистрация: Jul 2006
Адрес: #1=(list #1#)
Сообщений: 8,049
Записей в блоге: 38
На самом деле, кроме интуитовного понятия о том, что такое классы и их объекты, есть еще и сугубо математическое понимание вопроса. Я попробую в двух словах описать.

Мы можем описать нашу вселенную как многомерное пространство. Самый тривиальный пример пространстава - одномерное, это прямая, на которой мы можем отложить какие-то расстояния. Менее тривиальный пример - система декартовых координат (две прямые на которых мы откладываем расстояния), аналогично можно пойти дальше - трехмерная, четырехмерная системы и т.д.
Другое представление системы координат - это рассматривать ее не как две прямые, а как систему линейных уравнений, где подставляя значения решающие систему уравнений мы получаем результаты в нашем пространстве.
В общем случае мы представляем многомерную систему координат, как систему линейных уравнений вида:

a^n * x_0 + a^(n - 1) * x_1 ... a^0 * x_2
a^n * y_0 + a^(n - 1) * y_1 ... a^0 * y_2
...
a^n * z_0 + a^(n - 1) * z_1 ... a^0 * z_2

где n соответствует количеству измерений в нашем пространстве, а векторы x = [x_0, x_1, x_2], y = [y_0, y_1, y_2], z = [z_0, z_1, z_2] - коеффициенты системы.

О системах линейных уравнений существует множество теорем на основании известных нам свойств. Интересующее нас свойство - это свойство путем линейных преобразований используя векторы конкретной системы получить группу эквивалентных решений. Эти группы называют классами.

Пример. У нас есть система линейных уравнений:
(А)
a^2 + b = 0
2a^2 - 2b = 0
Такая система описывает все возможные решения в двумерном пространстве, т.как мы всегда сможем подобрать такие a и b для которых выбраная точка в двумерном пространстве будет решением системы.
(B)
a^2 + b = 0
a^2 - 2b = 0
Но такая система описывает только отдельную группу (класс матриц) в двумерном пространстве.

Сравнивая две системы уравнений, мы можем сказать, что классы, к которым они принадлежат относятся друг к другу как A :> B, т.е. B является подмножеством A.

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

Для полноты картины следует понимать, что реализации в языках программирования, как правило, стараются упростить систему, и ввиду некоторых технических ограничений не могут в точности следовать математическому описанию.
Например, многие ЯП подразумевают иерархическую систему наследования, не смотря на то, что объекты одного класса могут быть получены от разных родителей, иногда не имеющих непосредственного общего предка. Мы не можем наперед знать всех возможных родителей (уравнений чьим решением является) данный объект (решение).
С другой стороны, иерархии являются легко понимаемой структурой, и на бытовом уровне с ними проще работать.
ЯП в большинстве случаев разрешают изменяемые объекты, т.е. объект может быть повторно использоваться в качестве другого объекта (решения).
__________________
Hell is the possibility of sanity