Форум программистов, компьютерный форум, киберфорум
С++ для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск  
 
 
Рейтинг 4.88/32: Рейтинг темы: голосов - 32, средняя оценка - 4.88
0 / 0 / 0
Регистрация: 06.12.2009
Сообщений: 17

Инкапсулировать без серьезного изменения..возможно ли?

07.02.2011, 22:15. Показов 9139. Ответов 90
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
C++
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
#include <iostream>
#include <stdio.h>
#include <stdlib.h>
using namespace std;
 
 
class list_block
{
    private:
 
        string data;
    public:
        list_block* next;
 
        string get_data() const {return data;}
        void set_data(string new_data){data=new_data;}
        void set_next(list_block* new_next) {next=new_next;}
 
        list_block(list_block* new_next) {set_next(new_next);}
};
 
 
class circle_list
{
    protected:
        list_block* first;
        list_block* second;
 
 
    public:
        circle_list();
        circle_list(string* strings, int n);
        circle_list(circle_list& list);
        ~circle_list();
 
        int size() const;
        void show() const;
        void push(string);  // chtob realizovat
                            //konstruktor s parametrom
                            //prishlos zasunut' push suda
};
 
 
 
 
 
 
circle_list::circle_list()
{
 
    first=new list_block(NULL);
    first->set_data("start");
    second=new list_block(first);
    second->set_data("end");
 
    first->set_next(second);
}
 
circle_list::circle_list(string* strings, int n)
{
    first=new list_block(NULL);
    first->set_data("start");
    second=new list_block(first);
    second->set_data("end");
 
    first->set_next(second);
    for (int i=0;i<n;i++) push(*(strings+i));
}
 
circle_list::circle_list(circle_list& list)
{
    first=new list_block(NULL);
    first->set_data("start");
    second=new list_block(first);
    second->set_data("end");
 
    first->set_next(second);
 
    list_block* block=list.first;
    int size=list.size()+2;
 
    for (int i=0;i<size-2;i++) block=block->next;
 
    while (block->get_data()!="start")
    {
        push(block->get_data());
        for (int i=0;i<size-1;i++) {block=block->next;}
    }
}
 
circle_list::~circle_list()
{
    list_block* block=first;
    list_block* block1=first;
    while (block->get_data()!="end")
    {
        block1=block->next;
        delete block;
        block=block1;
    }
    delete block;
    block=NULL;
    block1=NULL;
}
 
int circle_list::size() const
{
    list_block* block=first;
    if (block->next->get_data()=="end") return 0;
    int i=0;
 
    do
    {
        i=i+1;
        block=block->next;
    }
    while (block->next->get_data()!="end");
    return i;
}
 
void circle_list::show() const
{
    list_block* block=first->next;
    cout <<"Elementi:"<<endl;
    while (block->get_data()!="end")
    {
        cout << block->get_data() << endl;
        block=block->next;
    }
}
 
void circle_list::push(string st)
{
    list_block* new_block=new list_block(second);
    new_block->set_data(st);
    second=new_block;
    first->set_next(new_block);
}
 
 
 
 
 
class quene : public circle_list
{
    public:
        quene():circle_list(){};
        quene(string* strings, int n):circle_list(strings,n){};
        quene(quene& list):circle_list(list){};
 
        string deleter();
 
        void deleter(int n) {for (int i=0;i<n;i++) deleter();}
        void deleter_all() {deleter(size());}
        string push_pop(string st){push(st); return deleter();}
 
 
};
 
string quene::deleter()
{
    list_block* block=first;
    while (block->next->get_data()!="end")
        {
            block=block->next;
        }
    list_block* old_next=block->next;
    string res=block->get_data();
    block->next=block->next->next;
    block->set_data("end");
    delete old_next;
    return res;
}
 
int main()
{
    string str[3]={"Inna","Masha","Julja"};
    quene VASA(str,3);
    cout << "...sozdaem klass VASA s devchenkami *Julja*,*Masha*,*Inna*"<< endl;
    VASA.show();
    cout << endl;
    getchar();
 //----
    quene VASA1(VASA);
    cout << "...sozdaem klass VASA_1 kotorij bliznec VASA i kortorij sebe skopiroval devchenok"<< endl;
    VASA1.show();
    cout << endl;
    getchar();
 //----
    cout << "__teper VASJU brosila " << VASA.push_pop("Julja")<<". Potomu chto on mudak!"
 
            <<" Zato Julja za kanikuli potolstela i teper za dvoih"<< endl;
    VASA.show();
    cout << endl;
    getchar();
  //----
    cout << "i u VASi_1 stalo bloshe devchonok chem u VASI.";
    VASA1.show();
    cout << endl;
    getchar();
  //----
    cout << "I chtob bilo chesno, VASJU_1 tozhe brosit " << VASA1.push_pop("Julja")<< endl;
    VASA1.show();
    cout << endl;
    getchar();
  //----
    string str1[0]={};
    quene Julik;
    cout << "...no tut pojavilsja Julik..holostjak"<< endl;
    Julik.show();
    cout << endl;
    getchar();
  //----
    cout << "__i Innochka stala s Julikom"<< endl;
    Julik.push("Innochka");
    Julik.show();
    cout << endl;
    getchar();
   //----
    cout << "..no potom vdrug ona ego brosila (("<< endl;
    Julik.deleter();
    Julik.show();
    cout << endl;
    getchar();
    //----
    cout << "__a potom opjat' vernulas'"<< endl;
    Julik.push("Innochka");
    Julik.show();
    cout << endl;
    getchar();
   //----
    cout << "..no potom opjat', zaraza, brosila (("
            << endl << "I Julik ostalsja sovsem odin" << endl;
    Julik.deleter_all();
    Julik.show();
    cout << endl;
    getchar();
   //----
    cout << "VIVOD PR2:  INNOCHKA BALBES!!!!"<< endl;
    system("pause");
    return 0;
}

собственно это кольцевая очередь, на которой у меня построено уже 4 след лабы.Пошел сегодня сдавать - препод ткнул рукой в не инкапсулированный
public:
list_block* next;
из
class list_block в самом начале. И говорит, пока не перепишешь все так, чтоб он был в привате - не приму. А там куча операций присваивания и считывания через (->) из class circle_list и его сына quene.
Причем фрэнды использовать запретила. НА все мои возражения только кивает *овца((
Во общем, как малой кровью вбахать эту глупость в приват и иметь к ней нормальный доступ отовсюду? что не переписывать еще 5 таких лаб в хз скольких меcтах ?..
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
07.02.2011, 22:15
Ответы с готовыми решениями:

Событие изменения содержимого страницы без изменения адреса и перезагрузки страницы
Доброго времени суток! Такая проблема имеется: есть форма на определенном сайте (сам сайт, к сожалению показать не могу), на которой по...

Возможно ли изменения счётчика
Доброго времени суток ! Возможно странный вопрос. Имеется текущая база и архив. Как только я переношу данные из текущей в архив. И в...

Возможно ли в IDLE применить изменения, не закрывая всех окон?
Добрый день. Пишу свой модуль. Для этого использую IDLE. И, т.к. опыта маловато, практически после каждого изменения запускаю тестовые...

90
274 / 175 / 12
Регистрация: 14.03.2010
Сообщений: 501
11.02.2011, 01:26
Студворк — интернет-сервис помощи студентам
Цитата Сообщение от CyBOSSeR Посмотреть сообщение
volovzi, , Вы хоть на минуту забудьте про C++ и попробуйте понять, что Вам говорят. Не получится - обратитесь к литературе по ООП.
Фейспалм должен делать я, но я пока держусь.
Мне говорят много чего, но обоснования нет. Дай мне ссылку на подходящую, по-твоему, литературу, я её прочту.

Добавлено через 1 минуту
ForEveR, согласен, определение было неполным. Нужно сказать так: даже пара значений, объединённых по какому-либо смысловому признаку, являются сущностью.

Добавлено через 1 минуту
Цитата Сообщение от ForEveR Посмотреть сообщение
Ах да. Тогда писал пример, что можно сделать, если открыть next для прямого использования, но не прошло.
Прошло, я даже уже ответил.
0
Эксперт С++
 Аватар для CyBOSSeR
2348 / 1721 / 149
Регистрация: 06.03.2009
Сообщений: 3,675
11.02.2011, 01:29
Цитата Сообщение от volovzi Посмотреть сообщение
Дай мне ссылку на подходящую, по-твоему, литературу, я её прочту
Для начала:
Буч Г. Объектно-ориентированный анализ и проектирование.
GoF Приемы объектно-ориентированного проектирования. Паттерны проектирования.
Фаулер М. Рефакторинг.
Мартин Р. Чистый код.

Главное не прочитать, главное - понять.
0
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
11.02.2011, 01:33
volovzi, Да, прочитал. Э... Я же тебе говорил, что я не против открытия доступа к управлению узлами самому списку. Я против открытия доступа извне.
0
274 / 175 / 12
Регистрация: 14.03.2010
Сообщений: 501
11.02.2011, 01:34
Цитата Сообщение от CyBOSSeR Посмотреть сообщение
Для начала:
Буч Г. Объектно-ориентированный анализ и проектирование.
GoF Приемы объектно-ориентированного проектирования. Паттерны проектирования.
Фаулер М. Рефакторинг.
Мартин Р. Чистый код.
Желательно ещё указать страницы, чтобы всё не перечитывать.

Добавлено через 37 секунд
ForEveR, а чего ж ты тогда так активно со мной споришь?
0
В астрале
Эксперт С++
 Аватар для ForEveR
8049 / 4806 / 655
Регистрация: 24.06.2010
Сообщений: 10,562
11.02.2011, 01:38
volovzi, Видать, неверно понял. Ссори
0
Эксперт С++
 Аватар для CyBOSSeR
2348 / 1721 / 149
Регистрация: 06.03.2009
Сообщений: 3,675
11.02.2011, 01:39
Цитата Сообщение от volovzi Посмотреть сообщение
Желательно ещё указать страницы, чтобы всё не перечитывать.
volovzi, Вы хотите прочитав несколько десятков страниц понять то, что до некоторых и за несколько лет не доходит? Без труда не выловишь и рыбки из пруда.
0
274 / 175 / 12
Регистрация: 14.03.2010
Сообщений: 501
11.02.2011, 01:40
ForEveR,

Добавлено через 1 минуту
CyBOSSeR, короче, ты мне просто написал список известных тебе книг? Я так тоже могу.
0
Эксперт С++
 Аватар для CyBOSSeR
2348 / 1721 / 149
Регистрация: 06.03.2009
Сообщений: 3,675
11.02.2011, 01:47
volovzi, до Вас не достучаться. Пишите как умеете.
0
274 / 175 / 12
Регистрация: 14.03.2010
Сообщений: 501
11.02.2011, 01:51
CyBOSSeR, ну попытайся достучаться, обоснуй свою точку зрения. Дай конкретные ссылки на литературу. Пока что твои аргументы откровенно слабы, так что ещё неизвестно, до кого тут не достучаться.
0
бжни
 Аватар для alex_x_x
2473 / 1684 / 135
Регистрация: 14.05.2009
Сообщений: 7,162
11.02.2011, 22:12
Цитата Сообщение от volovzi Посмотреть сообщение
CyBOSSeR, короче, ты мне просто написал список известных тебе книг? Я так тоже могу.
что поделать если авторы книг, известные и уважаемые люди вообщем-то, не такие непризнанные авторитеты, как вы
2
Модератор
Эксперт PythonЭксперт JavaЭксперт CЭксперт С++
 Аватар для easybudda
12848 / 7597 / 1766
Регистрация: 25.07.2009
Сообщений: 13,985
11.02.2011, 22:19
Короче, ТопикСтартеру ответили, как смогли, а дальше сам как-нибудь разберётся. Закрыто.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
11.02.2011, 22:19

Возможно Ли Внести Изменения В Дизайн Только Конкретных Почтовых Баз
Доброго времени суток! Возможно ли внести изменения в дизайн только конкретных почтовых баз или только в ntf-шаблоны...?...Вопрос возник по...

Не удалось запустить Windows. Возможно это произошло из-за недавнего изменения оборудования
Добрый день! Возникла проблема при запуске следующего характера: Не удалось запустить Windows. Возможно это произошло из-за недавнего...

Инкапсулировать класс
Помоги пожалуйста передалать класс на работу с аксессорами using System; using System.Collections.Generic; using System.Linq; ...

Веб-программист для серьезного проекта
Всем привет! Я создаю серьезный проект, и сейчас собираю команду для реализации.. Человек должен владеть php или js (не нужны супер...

нужны специалисты для серьезного проекта
Добрый день. Нужны специалисты для создания проекта похожего на epochta.Ru. Кто готов осилить? Или посоветовать кого нибудь.


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

Или воспользуйтесь поиском по форуму:
91
Закрытая тема Создать тему
Новые блоги и статьи
BitTorrent (версия 7.11 English) и Меню Настройки
russiannick 15.11.2026
Пункты, отвечающие за отключение обновлений в BitTorrent версии 7. 11 (английской) Options Preferences General Language
Транслитерация текста с кириллицы на латиницу (вариант №4)
Maks 15.11.2026
Что-то я перемудрил с предыдущими версиями, в этот раз сделал всё проще, обратившись к функции "СтрокаЛатиницей" из типового общего модуля "СтроковыеФункцииКлиент". В данной функции нет апострофов,. . .
BitTorrent (версия 4.3.9) и Меню Настройки
russiannick 15.11.2026
В меню Настройки можно отключить автоматическое обновление программы. Карта этого меню приложена ниже. Нужный пункт выделен красным. Сервис Настройки Поведение
Транслитерация текста с кириллицы на латиницу (вариант №3)
Maks 15.11.2026
Обновленная версия предыдущей обработки. Изменения коснулись букв: Ъ, Ы, Ь, Э, отображения которых зависят от положения реквизита "Транслитерация имён". Изменено отображение буквы Й. Добавлена. . .
Транслитерация текста с кириллицы на латиницу (вариант №2)
Maks 13.11.2026
Обновленная версия ранее созданной обработки. Добавлено: - Проверка исходного текста на кириллицу, через обращение к стандартной функции "ТолькоКириллицаВСтроке" из общего модуля. . .
Часы с термометром и праздничным календарем
yariko 12.11.2026
Сегодня мы рассмотрим как можно сделать отличные многофункциональные часы. Итак, поставим конкретную задачу: разработать часы с календарем, двумя термодатчиками, выводом поздравительных сообщений. . .
Транслитерация текста с кириллицы на латиницу (вариант №1)
Maks 11.11.2026
Решил облегчить жизнь себе и коллегам админам при создании электронных почтовых ящиков для пользователей, в результате написал обработку "Транслитерация текста" с кириллицы на латиницу, а в ней. . .
Книги по геймдизайну, левел-дизайну, игровым механикам и проектированию игрового опыта
8Observer8 08.11.2026
Содержание блога | English Version 1. 2003 - 06 - Designing Virtual Worlds (1st Edition) Автор: Richard A. Bartle | Объем: 768 стр. Ссылки: Amazon . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru