Форум программистов, компьютерный форум, киберфорум
C++ Builder
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.72/18: Рейтинг темы: голосов - 18, средняя оценка - 4.72
13 / 13 / 2
Регистрация: 14.04.2010
Сообщений: 72
1

Изучение принципов объектно-ориентированного программирования. Инкапсуляция. Конструкторы и деструкторы классов. Создание экземпляров класса

24.05.2010, 00:03. Показов 3214. Ответов 1
Метки нет (Все метки)

Помогите пожалуйста, вот копия методички, вроде бы делаю все как в ней описано но ничего не получается. Появляются ошибки значение которых я не понимаю. Можете сказать правильно ли здесь все написано. Если все правильно, буду думать дальше

Шаг 1. Создание нового проекта
Создайте новое приложение (пункт New Application меню File C + + Builder) и сохраните в личной папке главный модуль (по умолчания, Unit1) под именем MainUnit, а проект (по умолчания, Project1) под именем Objects.

Шаг 2. Создание нового модуля
Создайте еще один модуль приложения (команда New Unit меню File) и сохраните его под именем PointUnit. Откройте заголовочный файл созданного модуля (именем заголовочного файла будет PointUnit.h. После директивы # define PointUnit и перед директивой # endif запишите
описание нового класса MyPoint (точка):
C++
1
2
3
class MyPoint 
{ 
};
Класс MyPoint будет служить для вывода на экран, а также осуществление различного рода операций с точкой - пикселем (перемещение, изменение цвета и т.д.).

Шаг 3. Следующим этапом является описание свойств точки, в простейшем случае, ее координат и цвета. Описание этих свойств требует записи в середине фигурных скобок класса MyPoint следующих переменных:
C++
1
2
int x, y; / / Координаты точки 
TColor Color; / / Цвет точки
Где int - целочисленных тип данных, TColor - специальный тип для описания переменных, сохраняющих значение цвета. Для использования TColor необходимо подключить заголовочный файл главного модуля (с этой целью добавьте в файл PointUnit.h запись # include "MainUnit.h").

Шаг 4. Далее следует описать хотя бы один метод - функцию, которая рисует точку на поверхности формы Form1. Назовем этот метод Show (); Для описания метода Show () внутри фигурных скобок класса MyPoint после описания переменных x, y, Color нужно сделать запись:
C++
1
2
public: 
void Show ();
Ключевое слово public (англ. общий) создает открытый раздел класса, данные и методы которого доступны и вне класса MyPoint. Переменные x, y, Color окажутся в закрытой (private) части класса и недоступны для методов, не являющихся членами класса MyPoint. Далее необходимо определить описанный метод Show. Определение методов осуществляется уже внутри соответствующего модуля (в нашем случае PointUnit.срр):
C++
1
2
3
void MyPoint:: Show () 
{ 
}
При определении имя метода уточняется именем класса (в нашем случае, MyPoint) с помощью оператора расширения области видимости:: двойная двоеточие. Внутри фигурных скобок указывается тело (совокупность операторов) данного метода (в нашем случае вывода точки на экран). В форму встроена специальная поверхность - полотно (Canvas), предназначенное для рисования. В свою очередь полотно состоит из отдельных точек - пикселей (Pixels), каждой из которых можно придать определенный цвет. Чтобы метод Show рисовал на форме Form1 точку цвета Color с координатами x, y необходимо внутри фигурных скобок метода записать:
C++
1
Form1-> Canvas-> Pixels [x] [y] = Color;
Описание формы Form1 был осуществлен в файле MainUnit.h, поэтому для того, чтобы в модуле PointUnit использовать форму (рисовать на ней), необходимо подключить к нему заголовочный файл MainUnit.h, т.е. сделать запись:
C++
1
# Include "MainUnit.h"
Шаг 5. Теперь необходимо создать конкретный экземпляр (объект) абстрактного класса точки. В объектно-ориентированном программировании принято для создание конкретного экземпляра класса использовать специальный метод, что называется конструктором. Имя конструктора совпадает с именем класса, а его параметрами являются конкретные значения свойств объекта. Конструктором класса MyPoint будет метод MyPoint (), а его параметрами - начальные значения координат точки и ее цвета:
C++
1
MyPoint (int x0, int y0, TColor Color0. / / Описание конструктора
Эта строка надо поместить в раздел public: описания класса MyPoint в заголовочном файле PointUnit.h, а определение конструктора - в файл модуля PointUnit.срр:
C++
1
2
3
4
5
6
MyPoint:: MyPoint (int x0, int y0, TColor Color0) 
{ 
x = x0; 
y = y0; 
Color = Color0; 
}
Шаг 6. В главном модуле MainUnit.cpp опишите переменную типа точка:
C++
1
MyPoint P (100, 100, clRed);
эта запись означает, что создается переменная с именем Р и для нее вызывается конструктор класса MyPoint с параметрами (100, 100, clRed);. Эти величины будут присвоены соответственно переменным x, y, Color, описанным в классе MyPoint.
Примечание. Чтобы в модуле MainUnit был виден класс MyPoint, необходимо подключить к нему заголовочный файл PointUnit.h, т.е. сделать запись. Поместите в обработчик события OnPaint (при перерисовке) формы метод P. Show ();
Запустите приложение и изучите его свойства - на форме будет отражаться точка красного цвета. Точка будет отображаться и после того, как вы свернете и снова развернете форму: событие OnPaint генерируется каждый раз, когда форму необходимо перерисовать.

Шаг 7. Создайте экземпляр точки динамично, для чего воспользуйтесь операцией new:
C++
1
MyPoint * P1 = new MyPoint (200, 200, clGreen);
В обработчик OnPaint запишите строку:
C++
1
P1-> Show ();
Примечание. Доступ к методу Show () объекта Р1 осуществляется при помощи оператора косвенного доступа ->, потому что Р1 является указателем на экземпляр класса. После использования Р1 его необходимо удалить, для чего в обработчик события OnDestroy формы внесите строку:
C++
1
delete P1;
Шаг 8. Опишите и определите деструктор класса MyPoint. Для этого в файл PointUnit.h добавьте запись:
C++
1
~ MyPoint ();
а в файл PointUnit.cpp запись:
C++
1
2
3
4
MyPoint:: ~ MyPoint () 
{ 
// 
}
0

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
24.05.2010, 00:03
Ответы с готовыми решениями:

Объявление класса, создание экземпляров класса. Наследование классов
Вообщем начал делать программу:"Создать класс Матрицы, обеспечивающего размещение матрицы...

Фундаментальные принципы объектно ориентированного программирования
Я вот пытаюсь изучать ООП на с++ и столкнулся с тем что все кто пытается объяснить что это такое...

Использованние средств объектно-ориентированного программирования
Помогите пожалуйста, надо сделать программу используя средства объектно-ориентированного...

Ознакомление с принципами объектно-ориентированного программирования
Создать класс «Логические операции». Предусмотреть выполнение операций AND, OR, XOR над целыми...

1
40 / 39 / 4
Регистрация: 22.03.2010
Сообщений: 100
24.05.2010, 01:26 2
Цитата Сообщение от Виталий2014 Посмотреть сообщение
Описание формы Form1 был осуществлен в файле MainUnit.h, поэтому для того, чтобы в модуле PointUnit использовать форму (рисовать на ней), необходимо подключить к нему заголовочный файл MainUnit.h, т.е. сделать запись:
C++
1
#Include "MainUnit.h"
Пишется с маленькой:
#include "MainUnit.h"

Я, например не оч понял(если тупо скопировать) куда вставлять ~ MyPoint ();
А вообще лучше выкладывай не методичку, а свой код и полный текст ошибок. Это значительно ускорит время решения задачи, если за неё ктонить захочет взяться.
0
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
24.05.2010, 01:26

Помощь в написании контрольных, курсовых и дипломных работ здесь.

Классы, конструкторы, деструкторы, методы классов
Доброго времени суток , Господа программисты. :) Очень нужна Ваша помощь. Написал программу, но...

Задачка для любителей объектно-ориентированного программирования
Доброго времени суток всем! Я новичок в Python и пока только учусь, споткнулся на задаче по...

Основные алгоритмические структуры объектно-ориентированного программирования
Привет форумчане. Через неделю сессия, попались такие вопросы по предмету. Не могу найти решения 13...

Методами объектно-ориентированного программирования описать графический объект
Методами объектно-ориентированного программирования описать графический объект + как потомок...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2021, vBulletin Solutions, Inc.