Команда (фрилансеры)

Набираем команду фрилансеров, Вы:

  • Программист,
  • Дизайнер,
  • SEO-специалист,
  • Менеджер

Разработка на заказ

Наша команда фрилансеров выполнит
работы на заказ:

Создание и раскрутка сайтов
Разработка приложений (мобайл, десктоп, сервер)
Разработка игр (веб, мобайл, 3D)
Аутсорсинг, фриланс

Контакты
vk.com/sitev_ru
Skype: sitev.ru
E-mail: mike@sitev.ru
github.com/sitev

Рейтинг@Mail.ru

Besucherzahler
счетчик посещений
Сайт на C++
Наш сайт работает на C++ и это очень круто! =))

Классы и объекты в Cj (spec 0.3)

Продолжаем расширять спецификацию (см. спецификацию 0.2).

Ещё недавно мы реализовывали функции, а теперь внедряем классы! Почему мы так спешим? Ведь, например, Javascript до сих пор не имеет нормальной реализации классов?

Скажу сразу, я фанат парадигмы ООП!

Если я фанат и пишу программы, практически всегда, основанную на классах, то, например, у меня есть знакомый товарищ, который любит применять структуры. И когда я ему пытаюсь объяснить, что классы и структуры, например, в С++ это почти одно и тоже, а человек, который живёт в мире объектов, должен более органично воспринимать именно объекты, а значит, и их описание в виде классов, он всё равно применяет структуры - так написание программы ему кажется более правильной и он в своих структурах не применяет никаких функций, функции у него отдельно. Видимо, у него функциональный стиль написания программы. Меня же структуры просто бесят.

Классы

Чтобы хоть как-то сблизить наши позиции, слова class и struct будут отсутствовать в языке Cj! Будет только понятие класс (хотя, кто хочет, если в классе не использует функции, может именновать его структурой). Синтаксис у класса такой:

identifier {

	type identifier; // поле класса
	
	type identifier ( parameters ) { statements } // метод класса
	
}

Как мы видим, точка с запятой после символа } отсутствует, в отличии от С++, но можно и приписать, если не привычно, лишние ; никак не влияют на программу Cj.

Сразу запомним: если идёт просто идентификатор - это обычная переменная, идентификатор со скобочками [] - это массив, идентификатор () - функция, а идентификатор {} - класс. По-моему, очень удобно!

Как и в С++, если идентификатор совпадает с именем метода класса, то этот метод является конструктором и не может возвращать тип. Такой же идентификатор с тильдой ~ будет деструктором. Опишем для примера класс Button:

Button {
	Button() {}
	~Button() {}
}

Класс, как и в обычных языках, можно порождать/расширять:

Button : Control {
}

На данный момент не рассматриваются такие моменты: множественное наследование, видимость - она всегда public, никаких абстрактных функций, классов, никаких интерфейсов. Возможно, более понятную картину нам покажут последующие спецификации языка.

Объекты

Описание объекта без инициализации:

class_name identifier;

Описание объекта с инициализацией:

class_name idenfitier ( );

class_name idenfitier ( parameters );

class_name identifier = class_name ( );

class_name identifier = class_name ( parameters );

Чтобы получить доступ к свойствам объекта, будет использовать символ точку ., никаких стрелочек ->, например:

object.field = expression;
variable = object.field;
object.method(expression);
variable = object.method();

На этом пока всё, очевидно, тема ООП полностью не раскрыта и спецификация классов ещё будет расширяться и расширяться в будущем.


Отправить комментарий
Наш проект: язык Cj
Cj - язык программирования (C++ & Javascript)
Новый язык программирования, для разработки веб, мобайл, десктоп-приложений, игр... подробнее...

Хотите поддержать проект?

  • Оставляйте ссылки на наш сайт
  • Станьте спонсором проекта
подробнее...

Концепция SITEV.ru

SITEV.ru - это социальная сеть для ИТ-специалистов (программистов, дизайнеров, seo-специалистов, рекламных менеджеров, маркетологов), в том числе фрилансеров, бизнесменов... а также обычных пользователей, для которых и делается ИТ

Реклама


Поиск работы по всему миру