Модераторы: LSD

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Что должно быть как минимум в ООП-программе? 
:(
    Опции темы
ZZZkoderZZZ
Дата 12.3.2013, 10:31 (ссылка)   | (голосов:6) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 11.3.2013




Мое мнение, что в ООП-программа должна содержать:
- не менее 2 классов (один класс должен наследоваться от другого) - для демонстрации принципа наследования 
- не менее 1 приватного члена класса - для демонстрации принципа инкапсуляции
- не менее 1 виртуального метода и не менее 1 перегрузки этого метода - для демонстрации принципа полиморфизма.
- не должно быть функций и переменных, не являющихся членом класса (за исключением ф-и main на С++)

Может быть надо продемонстрировать что-то еще?

Можно ли вот такую программу считать правильной ООП-программой?

Код

class A1
{
     int b;
protected:
     int a;
public:
     virtual int A()
     {
          return a;
      }
};
class B:public A1{
public:
     virtual int A()
     {
          return a+1;
      }
};
void main()
{
}


Это сообщение отредактировал(а) ZZZkoderZZZ - 12.3.2013, 12:23
PM MAIL   Вверх
xvr
Дата 12.3.2013, 11:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 7046
Регистрация: 28.8.2007
Где: Дублин, Ирландия




Цитата(ZZZkoderZZZ @  12.3.2013,  10:31 Найти цитируемый пост)
Мое мнение, что в ООП-программа должна содержать:

Тут не хватает одного слова - "правильная демонстрационная ООП-программа"  smile 

PM MAIL   Вверх
bsa
Дата 12.3.2013, 14:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия




Цитата(ZZZkoderZZZ @  12.3.2013,  11:31 Найти цитируемый пост)
Можно ли вот такую программу считать правильной ООП-программой?

теоретически можно. практически нельзя - она ничего не делает.
А потом, у тебя с оформлением кода проблемы.
Рекомендую не быть чукчей-писателем из известного анекдота, а почитать для начала книжки и порешать задачки из них. Список литературы есть в разделе для Новичков (в ответах на часто задаваемые вопросы).
Кстати, текущее состояние твоих знаний, полное отсутствие опыта, а так же юношеский максимализм, будут препятствовать твоему поступлению на любую вменяемую работу в области программирования.
PM   Вверх
ZZZkoderZZZ
Дата 12.3.2013, 14:59 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 11.3.2013




Цитата(bsa @ 12.3.2013,  14:53)
А потом, у тебя с оформлением кода проблемы.

Это опять про const ? 
PM MAIL   Вверх
bsa
Дата 12.3.2013, 15:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия




Цитата(ZZZkoderZZZ @  12.3.2013,  15:59 Найти цитируемый пост)
Это опять про const ?  
Нет. Это про оформление кода.
PM   Вверх
baldina
Дата 12.3.2013, 15:53 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 3433
Регистрация: 5.12.2007
Где: Москва




вот вполне ОО программа:
Код

#include <iostream>

int main () {
  std::cout << "Hello, world" << std::endl;
}

тут есть объект std::cout, тип которого участвует в наследовании и имеет в своем составе подобъекты с виртуальными функциями.
ему (в ОО терминологии) отправляются сообщения. в качестве сообщения отправляются объекты. 
для этого используются перегруженные операции (это не является обязательной частью ООП, но достойно упоминания как разновидность полиморфизма)

Добавлено через 5 минут и 12 секунд
ZZZkoderZZZ, ОО программа - не самоцель. ООП - инструмент, средство. никому не интересны показатели программы в виде числа классов, объектов, функций, их свойств и т.п.
программа должна делать то, что должна, и быть сопровождаемой. парадигмы, библиотеки и прочие инструменты лишь средства достижения указанных целей.
PM MAIL   Вверх
ZZZkoderZZZ
Дата 12.3.2013, 16:03 (ссылка) |    (голосов:1) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 11.3.2013




Цитата(bsa @ 12.3.2013,  15:01)
Нет. Это про оформление кода

Как можно лучше оформить короткую программу, которая ничего не делает? Отступы есть, скобочки расставлены по одной схеме, комментировать здесь нечего. Очень хорошо выполнены требования 6, 7 - 
6. Большие функции - это зло
7. Не стоит делать функции с более чем 3-мя параметрами


PM MAIL   Вверх
bsa
Дата 12.3.2013, 16:22 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия




ZZZkoderZZZ, публичная часть класса должна (рекомендуется) располагаться в начале, а приватная в конце. Фигурные скобки должны расставляться согласно одному правилу, а у тебя 3 метода расстановки, причем один необычный. Двоеточие при определении наследования следовало бы выделить пробелами.
PM   Вверх
feodorv
Дата 12.3.2013, 16:25 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Комодератор
Сообщений: 2214
Регистрация: 30.7.2011




Цитата(ZZZkoderZZZ @  12.3.2013,  17:03 Найти цитируемый пост)
Как можно лучше оформить короткую программу, которая ничего не делает?

Ну пусть хоть "Hello, world!" напечатает что ли...


--------------------
Напильник, велосипед, грабли и костыли - основные инструменты программиста...
PM MAIL   Вверх
ZZZkoderZZZ
Дата 12.3.2013, 16:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 11.3.2013




Цитата(bsa @ 12.3.2013,  16:22)
публичная часть класса должна (рекомендуется) располагаться в начале, а приватная в конце

Зачем писать лишнее слово? 
Разработчики С++ зачем-то по-умолчанию всё сделали private, может быть по этой причине?

Это сообщение отредактировал(а) ZZZkoderZZZ - 12.3.2013, 16:55
PM MAIL   Вверх
azesmcar
Дата 12.3.2013, 17:04 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


uploading...
****


Профиль
Группа: Участник Клуба
Сообщений: 6291
Регистрация: 12.11.2004
Где: Армения




Цитата(ZZZkoderZZZ @  12.3.2013,  16:51 Найти цитируемый пост)
Разработчики С++ зачем-то по-умолчанию всё сделали private, может быть по этой причине?

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

Цитата(bsa @  12.3.2013,  16:22 Найти цитируемый пост)
публичная часть класса должна (рекомендуется) располагаться в начале, а приватная в конце

Ну я бы сказал это вопрос вкуса, хотя лично тоже предпочитаю распологать вконце.

PM   Вверх
bsa
Дата 12.3.2013, 18:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 9185
Регистрация: 6.4.2006
Где: Москва, Россия




смысл положений публичных и приватных областей - в удобстве. Только разработчику класса интересна приватная часть. Пользователям класса (а их значительно больше, чем разработчиков, обычно) интересен именно публичный (или, реже, защищенный) раздел. Поэтому публичный следует располагать в начале, чтобы пользователь не искал его.
PM   Вверх
NoviceF
Дата 12.3.2013, 18:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 313
Регистрация: 13.3.2012
Где: Ростов-на-Дону




Цитата(ZZZkoderZZZ @  12.3.2013,  17:51 Найти цитируемый пост)
Разработчики С++ зачем-то по-умолчанию всё сделали private, может быть по этой причине?


хочешь паблик по-умолчанию - используй структуры.
PM MAIL   Вверх
ZZZkoderZZZ
Дата 12.3.2013, 19:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 54
Регистрация: 11.3.2013




Цитата(NoviceF @ 12.3.2013,  18:53)
хочешь паблик по-умолчанию - используй структуры.

В структуре надо дописывать private, а в классе - public.

Это сообщение отредактировал(а) ZZZkoderZZZ - 12.3.2013, 19:21
PM MAIL   Вверх
NoviceF
Дата 12.3.2013, 20:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 313
Регистрация: 13.3.2012
Где: Ростов-на-Дону




Цитата(ZZZkoderZZZ @  12.3.2013,  20:20 Найти цитируемый пост)
В структуре надо дописывать private, а в классе - public.

можно не дописывать, зависит от содержимого. 

Если в структуре нет членов-данных, зачастую, private секции может не быть вообще.
PM MAIL   Вверх
Страницы: (3) Все [1] 2 3 
Ответ в темуСоздание новой темы Создание опроса
Правила раздела «Флейм»
Sneg0k

Добро пожаловать в «Флейм».

В разделе не действуют многие правила:

  • Можно оффтопить(умеренно)
  • Можно общаться на темы, не только связанные с программированием.

Строго запрещено:

  • Размещать рекламу
  • Обсуждать политику
  • Оскорблять друг-друга и переходить на личности
  • Наезжать, провоцировать других участников форума
  • Материться
  • Троллить

Напоминаем о существовании волшебной кнопочки "Репорт". Если вы увидели сообщение, несовместимое с жизнью, просьба подвести на нее курсор и клацнуть левой клавишей мышки. Тем самым вы сможете призвать злого, но жутко справедливого джина-модератора, который нашлет порчу на злостного нарушителя. Кстати - счётчик сообщений здесь не растёт.


Глас Винграда:


Глас Философии:


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Sneg0k

 
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Флейм | Следующая тема »


 




[ Время генерации скрипта: 0.0984 ]   [ Использовано запросов: 20 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.