самый простой пример я увидел в учебнике по программированию на языке Jаva. там был пример с расчетом точек пересечения отрезков. задача - сделать удобное средство для простеньких математических рассчетов (для начала - вычисление точек пересечения двух отрезков).
Если смотреть с точки срения процедурного программирования - нужна 1 функця и 4 параметра к ней - координаты х и у двух точек). С точки зрения ООП - нужно описать класс точки (который характеризуется всего 2 переменными - координатами х и у, далее описываеся класс линия, так же характеризующаяся 2 свойствами - экземплярами класса точка + 1 метод ("найти пересечение с", которому передается другой экземпляр класса линия).
пока процедурный метод кажется удобнее, но тут задача расширилось - нам нужно узнать сумму расстояний от каждой предыдущей точки до точки их пересечения. При ООП подходе требуется добавить классу point 1 метод - getDistanceToPoint, в качестве аргумента, принимающую другой экземпляр класса point. - все
Выглядеть это дубет как-то так:
PHP:
скопировать код в буфер обмена
$point1 = new point(1, 10); $point2 = new Point(7, 4); $point3 = new point(0, 8); $point4 = new Point(9, 2); $line1 = new Line($point1, $point2); $line2 = new Line($point3, $point4); $crossPoint = $line1.getCrossPoint($line2); $sum =0; for($i=1; $i<5; $i++){ $name = '$line'.$i; $sum += $crossPoint->getDistanceToPoint($$name); }
сделайте это в процедурном стиле и посмотрите, какой код понятнее и структурированнее, а теперь представьте, что добавились требования искать пересечения трех или четырех линий (если они есть), добавились фигуры (треугольники, квадраты и тд), нужно искать их площади, периметры, площади пересечений и тд. Создать же фигуру в стиле ООП - описать 1 класс, содержащий в себе элементы других классов.
PS
Если будут вопросы - могу в аське на них ответить или в скайпе.
(Добавление)
понятное дело, в коде есть недочеты (например суммировать нужно по модулю, дабы отрицательные длины не вычиталь из суммы, да и тупо можно было сложить 2 длины отрезков), но у кода цель лишь показать принцип, суть ООП - описывать классы и, что самое важное, функции их взаимодействия, связи, между ними. Сам по себе класс нужен крайне редко, но когда идет более сложная логика взаимодействия экземпляров классов - тут ООП в явном выигрыше.(Отредактировано автором: 11 Апреля, 2011 - 17:32:08)
|