SEO продвижение сайтов

ООП в С++ – классы и объекты

Для создания класса в С++ необходимо указать служебное слово class, после указывается имя класса, обычно с большой буквы, потом фигурные скобки. В фигурных скобках описывается тело класса.

Класс - это пользовательский тип данных.

Класс содержит переменные (свойства класса или поля класса) и функции (методы класса). Свойства и методы - являются членами класса.

Модификаторы доступа

  • public — доступ открыт всем, кто видит определение данного класса. Доступ разрешён к данным класса извне.
  • protected — доступ в классе и производным от данного класса. Производные классы (потомки) получают свободный доступ к таким свойствам или метода. Все другие классы такого доступа не имеют.
  • private — доступ открыт ТОЛЬКО самому классу (т.е. функциям-членам данного класса) и друзьям (friend) данного класса - как функциям, так и классам. Однако производные классы (потомки) НЕ получают доступа к этим данным совсем. И все другие классы такого доступа не имеют.

Если отсутствует модификатор, то все функции и переменные, по умолчанию являются закрытыми, но лучше определять модификатор всегда.

#include <iostream>//Подключаем cin и cout и др.
#include <string>//Строки
using namespace std;//Пространство имен

class Gena//КЛАСС
{
public://Доступ всем
string name="Маша";//Свойство

Gena(string name)//Конструктор
{
cout << name << " и " << this->name << endl;
}

void f()//Метод
{
cout << "Функция f()" << endl;
}

~Gena()//Деструктор
{
cout << "Пока!" << endl;
}

protected://Доступ ТОЛЬКО из класса
private://Доступ из класса и потомков
};

int main()
{
setlocale (LC_ALL, "rus");//Кириллица

Gena G1("Гена");//Создание объекта G1 класса + аргумент в конструктор
G1.f();//Метод класса через объект G1
Gena G2("Ната");//Создание объекта G2 класса + аргумент в конструктор
//class Gena G1("Гена");//Или так:
//class Gena G1("Гена"), G2("Ната");//А можно и оба сразу

//system("pause");//Команда задержки экрана - комментируем, т.к. не сраб. ДЕСТРУКТОР
return 0;
}

Конструктор и Деструктор

Конструктор класса - это метод (функция), который имеет ОДИНАКОВОЕ ИМЯ с классом и автоматически вызывается при создании объекта класса. Конструктор (как правило) должен быть public и в него можно передать аргументы, как в обычную функцию.

Конструктор используют для определения начальных данных класса.

Деструктор класса - это метод (функция), который имеет ОДИНАКОВОЕ ~ИМЯ с классом и впереди тильда(~) и автоматически вызывается при отработки объекта класса. Деструктор (как правило) должен быть public и в него НЕЛЬЗЯ передать аргументы, как в обычную функцию.

Деструктор используют для освобождения занятой памяти.

Создание объекта: ИмяКласса имяОбъекта; Ингода в начале указывается служебное слово class.

...
Gena G1("Гена");//Создание объекта G1 класса + аргумент в конструктор
//class Gena G1("Гена");//Создание объекта G1 класса + аргумент в конструктор
//class Gena G1("Гена"), G2("Ната");//А можно и оба сразу
...

Создать объект можно и сразу:

...
class NameClass
{
//тело класса
}, nameObjecta;//Создаём объект сразу!
...

Перегрузка конструктора

Перегрузка конструктора - очень похожа на перегрузку функции. Перегрузка конструктора в С++ – это подмена конструктора в зависимости от количества аргументов и их типов. Можно использовать два или больше конструктора с разными аргументами:

  • по количеству
  • по типу
  • но НЕ типу return

Указатель this

Указатель this указывает на адрес созданного объекта класса - является скрытым первым параметром любого метода-элемента класса. Но this можно указывать и явно: this->свойство или this->метод(). Используют в том числе если свойства класса и аргументы метода совпадают по именам.

...
Gena(string name)//Конструктор
{
cout << name << " и " << this->name << endl;//name - аргумент метода; this->name - свойство класса;
}
...

Ошибки в тексте выделить и Ctrl+Enter


Расскажи о нас друзьям

Web-технологии

Подключение к MySQL в PHP

Примеры кода:

    
    //Это данные для подключения к MySQL
    $host='localhost'; // адрес сервера 
    $user='root';      // Login
    $pass='';          // Пароль
    $base='sasha';     // Имя базы данных<>

    echo '<h2>У вас PHP '.phpversion()."версия</h2>\n";
Подробнее...

Интерфейсы и трейты в PHP

Интерфейсы в ООП PHP

Интерфейсы (interface) - это класс, в котором все методы являются абстрактными (abstract) и открытыми (public). В интерфейсе ООП PHP можно задать задать только имена методов и их параметры, а реализованы они обязаны быть в расширяемых ими классах.

Для реализации интерфейса мы используем ключевое слово implements. Класс может реализовать более одного интерфейса, которые разделяются запятыми. Как и классы, интерфейс может содержать константы, которые запрещено переопределять.

Трейты в ООП PHP

Трейты (trait) - это механизм обеспечения повторного использования кода в PHP с учетом одиночного наследования. Трейт отчасти реализует множественное наследование, позволяя разработчику повторно использовать наборы методов свободно, в нескольких независимых классах.

Трейт похож на класс, но создать экземпляр трейта невозможно. Он предназначен для группирования функционала, который потом используется в разных классах с помощью директивы use. Нужные для использования в классе трейты можно указать через запятую.

Код примера:

Подробнее...

Шаблоны проектирования в PHP - паттерны

Шаблон проектирования или паттерн (англ. design pattern) - оптимальный и оригинальный подход в решении типичных, частовстречающихся задач. Эти подходы, приёмы имеют свои названия и используются почти во всех объектно-ориентированных языках программирования.

Паттерны можно классифицировать по назначению (цель, результат) и по тому, к чему обычно применяется к объектам или к классам.

  • Поведенческие (behavioral)
    • цепочка обязанностей (Chain of Responsibility);
    • команда (Command);
    • итератор (Iterator);
    • посредник (Mediator);
    • хранитель (Memento);
    • наблюдатель (Observer);
    • посетитель (Visitor);
    • стратегия (Strategy);
    • состояние (State);
    • шаблонный метод (Template Method).
  • Порождающие (creational)
    • простая фабрика (Simple Factory);
    • фабричный метод (Factory Method);
    • абстрактная фабрика (Abstract Factory);
    • строитель (Builder);
    • прототип (Prototype);
    • одиночка (Singleton).
  • Структурные (structural)
    • адаптер (Adapter);
    • мост (Bridge);
    • компоновщик (Composite);
    • декоратор (Decorator);
    • фасад (Facade);
    • приспособленец (Flyweight);
    • заместитель (Proxy).
Подробнее...
Интересные статьи

Стишки-депрессяшки

Стишки-депрессяшки

У меня нет попы

у меня нет тить

я должна работать

чтобы как то жить

©

В камасутре много

интересных поз

жаль у нас с женою

остеохондроз

©

Надо же приснится

всякая херня

прямо на работе

среди бела дня

Подробнее...

Почему или резонные вопросы

Почему или резонные вопросы

Хотель бы получить ответы на такие вопросы:

  1. Почему современные технологии одновременно позволяют производить банки для пива, которые не разлагаются на свалке за 100 лет, и кузова автомобилей, которые гниют за 3-4 года?
  2. Почему лимонный сок сделан из концентрата, а средство для мытья посуды – из настоящего лимона?
  3. Почему белая нитка, которой соединены новые носки, всегда оказывается прочнее, чем нитки, из которых сделаны сами носки?
Подробнее...

Детские загадки для взрослых

murzilka m

*Загадки, которые были опубликованы в журнале "Мурзилка" 30 лет назад!!! Сегодня они не для детей точно: ))*

1. Чтобы спереди погладить, нужно сзади полизать. (Почтовая марка)

2. Кругом волоса, посредине колбаса. (Кукуруза)

3. Сверху черно внутри красно, как засунешь так прекрасно. (Галоши)

Подробнее...

Оставить заявку

Закрыть
Заполните фрму и отправьте нам заяку
Заполните все обязательные поля*
captcha
Перезагрузить