среда, 7 сентября 2011 г.

ООП? Нате

абстракция = все элементы программы представляются в виде законченных и выполняющих свою роль объектов, благодаря чему можно четко отследить, что и как делает, наглядно представить взаимосвязи (например, с помощью UML).

инкапсуляция = сокрытие реализации. здесь два пункта. первый - это сокрытие некоторых переменных и функций от использования извне (т.е. с ними может работать только сам объект или объект того же класса). второе - это облегчение изменения логики программы, позволяет переписать функцию без изменений остального кода. собственно, это очень помогает ООП использовать "повторность кода".

наследование = возможность создавать "потомка" объекта, который наследует всю или часть структуры, но вносит в нее свои дополнения и изменения. опять же "повторность кода", но на самом деле, все гораздо сложнее - почитайте, к примеру, лекции по Java.

ну и, наконец, полиморфизм - это свойство наследования, которое позволяет использовать указатель на объект-родитель, для указания на объекты-потомки и использовать методы последних. популярно это выглядит так - объект класса Database может быть создан как объект класса MySQL, Interbase, Oracle (которые являются потомками DataBase) и при этом при вызове одной и той же функции connect() в разных случаях будет выполняться код такой функции, реализованный в конкретном классе потомка.

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