Объектно-ориентированное программирование является относительно новым подходом к созданию новых компьютерных приложений, который стремиться устранить многие из проблем, существующих в традиционных методиках программирования. Тот вид программирования, с которым доводилось пока иметь дело, называется функциональным (или процедурным) программированием и часто приводит к созданию так называемых монолитных приложений, все функциональные возможности в которых содержатся в нескольких модулях кода (а зачастую и вообще в одном). Приемы ООП обычно подразумевают специфическую функциональность и может быть изолирован или существовать совершенно независимо от всех остальных. Такое модульное программирование обеспечивает гораздо большее разнообразие и возможности для многократного использование кода.
Чтобы лучше показать, о чем идет речь, представим, что высокопроизводительное приложение на компьютере является высококлассным гоночным автомобилем. В случае создания с помощью традиционных приемов программирования этот спортивный автомобиль будет представлять собой одно целое. При желании улучшить что-нибудь в этом автомобиле его придется ремонтировать целиком, то есть отправлять в мастерскую и позволять профессиональному механику модернизировать его. В случае же применения ООП достаточно будет, например, купить у изготовителя новый мотор и самостоятельно заменить его, следуя инструкциям изготовителя и не погружаясь в изучение деталей по проведению ремонтных работ. Кроме того, мотор можно переделать и использовать для других целей, например, помещать в другой автомобиль или применять на лодке. Аналогичная ситуация происходит с электронной техникой. Ранее ремонтировали целиком, теперь блоками: добавляем память, меняем жесткий диск, не интересуясь их внутренним строением.
Достигается вышесказанное с помощью объектов и классов.
C# - это полностью объектный язык, и в нем все вокруг построено вокруг понятия класса и объект. Класс – достаточный блок кода, который должен обладать всеми необходимыми свойствами и методами. Хороший класс должен решать одну задачу.
Допустим, объект – сарай. Он обладает свойствами – ширина, высота и глубина. Класс – это описание объекта, так сказать его проектная документация. По одному классу можно создать несколько объектов (построить несколько сараев). У класса есть свойства (у сарая ширина, высота, глубина, название) и методы. Метод – то, что умеет делать сарай (хранить дрова определенного объема). Так как компьютер хранить дрова не умеет, то мы будем считать, что сарай умеет вычислять объем.