Языки программирования. Обзор-ликбез.

Спецвыпуск Хакер, номер #004, стр. 004-036-3

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

Второй из рассматриваемых принципов - объектно-ориентированное программирование. Программы такого плана пишутся не каждый раз "с нуля", а как модернизации к старым модулям и уже написанным программам. Объектно-ориентированные программы подобны кирпичным домам - их строят постепенно, кирпич за кирпичом. Кирпичи в таком здании - это так называемые объекты (не субъекты и всякого рода странные типы ;-)). Главное отличие объектов и объектного программирования заключается в том, что объект представляет собой не только код - процедуры и функции, но и данные, с которыми они работают. Два в одном. Но не шампунь. ;-) Например, на C++ (объектно-ориентированном расширении стандартного модульного C) объекты выглядят приблизительно вот так:

class Descendant

{

private:

char *Name;

void far *Data;

public:

Descendant();

~Descendant();

DoSomeBussiness;

};

Это довольно оригинальное решение и, на самом деле, весьма практичное. Ну, во-первых, несколько разных программистов могут писать одну программу по частям, абсолютно ничего не зная друг о друге, но зная, что у каждого объекта должны быть определенные функции. Например, объект Mouse должен иметь функцию определения, была ли нажата кнопка мыши, каковы мышиные координаты и т.д. А во-вторых, может понадобиться описать не просто мышку, а какую-нибудь навороченную с гироскопами (эта мыша прямо на палец надевается - рулезная штучка, только руки устают ее держать на весу, хоть и маленькая ;-)). И вместо того, чтобы переписывать весь код заново (особенно те участки, которые мало или совсем не изменились), можно создать еще один объект (его называют объектом-потомком), который будет обладать всеми полями данных и процедурами их обработки уже существующего объекта-предка и несколькими новыми процедурами/полями. То есть примерно так:

class Offspring: public Descendant

{

private:

void far *myCoolData;

public:

CrackerInterneta;

};

Объект Offspring (потомок) имеет, кроме явно описанных CrackerInterneta ;-) и myCoolData, также поля и процедуры объекта Descendant (предка). Кроме того, ненужные или старые процедуры можно переписывать/замещать точно так же. Это позволяет писать код, что называется, на века. И очень быстро.

Назад на стр. 004-036-2  Содержание  Вперед на стр. 004-036-4

загрузка...
Cпец Хакер #075Cпец Хакер #074Cпец Хакер #073Cпец Хакер #072Cпец Хакер #071Cпец Хакер #070Cпец Хакер #069Cпец Хакер #068Cпец Хакер #067Cпец Хакер #066Cпец Хакер #065Cпец Хакер #064Cпец Хакер #063Cпец Хакер #062Cпец Хакер #061Cпец Хакер #060Cпец Хакер #059Cпец Хакер #058Cпец Хакер #057Cпец Хакер #056Cпец Хакер #055Cпец Хакер #054Cпец Хакер #053Cпец Хакер #052Cпец Хакер #051Cпец Хакер #050Cпец Хакер #049Cпец Хакер #048Cпец Хакер #047Cпец Хакер #046Cпец Хакер #045Cпец Хакер #044Cпец Хакер #043Cпец Хакер #042Cпец Хакер #041Cпец Хакер #040Cпец Хакер #039Cпец Хакер #038Cпец Хакер #037Cпец Хакер #036Cпец Хакер #035Cпец Хакер #034Cпец Хакер #033Cпец Хакер #032Cпец Хакер #031Cпец Хакер #030Cпец Хакер #029Cпец Хакер #028Cпец Хакер #027Cпец Хакер #026Cпец Хакер #025Cпец Хакер #024Cпец Хакер #023Cпец Хакер #022Cпец Хакер #021Cпец Хакер #020Cпец Хакер #019Cпец Хакер #018Cпец Хакер #017Cпец Хакер #016Cпец Хакер #015Cпец Хакер #014Cпец Хакер #013Cпец Хакер #012Cпец Хакер #011Cпец Хакер #010Cпец Хакер #009Cпец Хакер #008Cпец Хакер #007Cпец Хакер #006Cпец Хакер #005Cпец Хакер #004Cпец Хакер #003Cпец Хакер #002Cпец Хакер #001