ЖУРНАЛ ХАКЕР

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

Спецвыпуск Хакер, номер #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