|
|||||||
АвтоАвтоматизацияАрхитектураАстрономияАудитБиологияБухгалтерияВоенное делоГенетикаГеографияГеологияГосударствоДомДругоеЖурналистика и СМИИзобретательствоИностранные языкиИнформатикаИскусствоИсторияКомпьютерыКулинарияКультураЛексикологияЛитератураЛогикаМаркетингМатематикаМашиностроениеМедицинаМенеджментМеталлы и СваркаМеханикаМузыкаНаселениеОбразованиеОхрана безопасности жизниОхрана ТрудаПедагогикаПолитикаПравоПриборостроениеПрограммированиеПроизводствоПромышленностьПсихологияРадиоРегилияСвязьСоциологияСпортСтандартизацияСтроительствоТехнологииТорговляТуризмФизикаФизиологияФилософияФинансыХимияХозяйствоЦеннообразованиеЧерчениеЭкологияЭконометрикаЭкономикаЭлектроникаЮриспунденкция |
КЛАССЫ. КОНСТРУКТОРЫ
Конструктор – метод, который вызывается при создании объекта. Имя конструктора всегда совпадает с именем класса, конструктор никогда не возвращает значение. class Date { private: int d, m, y; public: Date(int dd, int mm, int yy); } Date::Date (int dd, int mm, int yy) { d=dd; m=mm; y=yy; // проверка } В большинстве случаев классы содержат несколько конструкторов, т.к. обычно возникают разные ситуации, которые требуют создания объекта. Добавим в наш класс ещё 3 конструктора: class Date;{ private: int d, m, y; public: Date (int dd, int mm, int yy); Date (int dd, int mm); Date (int dd); Date();} конструкторы определяются таким же образом. В нашем примере не указанные параметры в алгоритмах добавленных конструкторов можно взять из текущей даты. Среди всех возможных этих ситуаций выделяются специальные случаи. Добавим в наш класс несколько конструкторов. Необходимость тех или иных конструкторов определяется программистом, но будучи специальному методу конструкторы определяют поведение компилятора. КЛАССЫ. ПРИНЦИП КОМПОЗИЦИИ Композиция — объекты одного класса входят в объекты другого и зависят друг от друга по времени жизни. Что такое композиция? Композиция (агрегирование, включение) – простейший механизм для создания нового класса путем объединения нескольких объектов существующих классов в единое целое При агрегировании между классами действует «отношение принадлежности» У машины есть кузов, колеса и двигатель У человека есть голова, руки, ноги и тело У треугольника есть вершины Вложенные объекты обычно объявляются закрытыми (private) внутри класса-агрегата Пример 1 - Треугольник class CPoint { public: CPoint(double x, double y); double GetX()const; double GetY()const; private: double m_x, m_y; }; class CTriangle { public: CTriangle(CPoint const& p1, CPoint const& p2, CPoint const& p3); CPoint GetVertex(unsigned index)const; private: CPoint m_p1, m_p2, m_p3; }; Пример 2 - Автомобиль // // Колесо class CWheel {... }; // Кузов class CBody {... }; // Двигатель class CEngine {... }; // Автомобиль class CAutomobile { public:... private: CBody m_body; CEngine m_engine; CWheel m_wheels[4]; };
КЛАССЫ. ДЕСТРУКТОР Пример: класс динамического массива целых чисел с проверкой выхода за границы массива. class IntArray { private int *p; int len; public: IntArray(int l=10); int get(int c); void set(int i, int val); int getLen(); void clear (); }
Идеальное решение – случай, когда за вызовом кода очистки следит компилятор. Который будет гарантировать, что код будет обязательно вызван и это произойдёт только 1 раз. Эту возможность обеспечивает специальный метод – деструктор. Деструктор – это метод который вызывается компилятором, когда завершается время жизни объекта. Имя деструктора совпадает с именем класса, предваряется значком «~», и деструктор не имеет параметров и возвращаемого значения. IntArray::~IntArray() {delete []p;} В данном случае память – не единственный ресурс, которым может упралять пара конструктор, деструктор.
Поиск по сайту: |
Все материалы представленные на сайте исключительно с целью ознакомления читателями и не преследуют коммерческих целей или нарушение авторских прав. Студалл.Орг (0.003 сек.) |