Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > Классы в С++


Автор: Sliva 4.5.2006, 22:10
Класс, который реализует множество слов - как его можно описать? Если я описываю так: 

class Words  
{
  private : char*  masWord[10];  
    Words * next;
                       
  public : Words(char* aw);
            ~Words();
               AddWord();// какие должны быть параметры у функции добавления элемента?
};  // class Words

это верно??? 

Автор: cozzzy 4.5.2006, 23:29
я бы сделал:

Код

class Words
{
private:
      std::vector<std::string> words_;
public:
      Words(const char* aw); //? Возможно Words(const std::vector<std::string>& aw);
      ~Words();
      AddWord(const char* word)
      {

           if(word)
               words_.push_back(std::string(word));
       }
   

Автор: Heremum 5.5.2006, 05:43
А я бы не маялся с вектором.
Код

class aWord
{
    public:
        aWord(char* word);
        aWord();
        ~aWord();
        
        aWord* addNewWord(char* cap);
        
        char* thisWord;
        aWord* next;
        aWord* prev;
};
 

Автор: MAKCim 5.5.2006, 07:40
Цитата

Код

А я бы не маялся с вектором.

class aWord
{
    public:
        aWord(char* word);
        aWord();
        ~aWord();
        
        aWord* addNewWord(char* cap);
        
        char* thisWord;
        aWord* next;
        aWord* prev;
};


тут вообще не соблюдается один из основных принципов ООП - инкапсуляция
+ работа с указателями требует больше внимания и осторожности (двойное удаление и прочее)  

Автор: cozzzy 5.5.2006, 11:10
Цитата(Heremum @  5.5.2006,  04:43 Найти цитируемый пост)
А я бы не маялся с вектором.

Объясни чем твой способ лучше и удобнее?
Сейчас вообще не рекомендуется использовать указатели в чистом виде, кроме случаев, когда это действительно необходимо. В данном случае необходимости в этом нету. 

Цитата(MAKCim @  5.5.2006,  06:40 Найти цитируемый пост)
тут вообще не соблюдается один из основных принципов ООП - инкапсуляция

Возможно он просто пропустил модификатор private

 

Автор: Heremum 5.5.2006, 13:39
MAKCim
Цитата(MAKCim @  5.5.2006,  07:40 Найти цитируемый пост)
тут вообще не соблюдается один из основных принципов ООП - инкапсуляция

Во-первых: я набросал "наспех".
Во-вторых: как хочу так и пишу и никого не спрашиваю. Если вы как загепнотизированный следуете всем правилам ООП, то это ваши личные проблемы и ничьи больше. Для примера мой вариант кактит.
В третьих: теперь объясните мне, программисту, который сам пишет полностью проект: зачем мне инкапсуляция, когда я и так знаю: куда соваться, а куда нет? smile 
В четвёртых:
Цитата

+ работа с указателями требует больше внимания и осторожности (двойное удаление и прочее)  

Если у вас силёнок не хватает справиться с такой мелочью, как двойное удалении, то не надо говорить, что человек который это может - балбес неграмотный. Вы так не сказали, но и так из контекста ясно, что это имелось ввиду.
Дожили, за знания уже репутацию понижают smile 
Цитата

Объясни чем твой способ лучше и удобнее?

Я не говорил, что он удобнее. Я говорил, что я бы не маялся с векторами, потому что являюсь тем, кого кличут "велосипедистами": я пишу всегда всё своё. 

Автор: Fazil6 5.5.2006, 13:56
Цитата

В третьих: теперь объясните мне, программисту, который сам пишет полностью проект: зачем мне инкапсуляция, когда я и так знаю: куда соваться, а куда нет?

ой и не говори... Кругом одни дэбилы. 

Автор: cozzzy 5.5.2006, 14:30
Цитата(Fazil6 @  5.5.2006,  12:56 Найти цитируемый пост)
ой и не говори... Кругом одни дэбилы. 

 smile 

Блин я б тебе еще рейтинг понизил, если б мог. 

Цитата(Heremum @  5.5.2006,  12:39 Найти цитируемый пост)
Для примера мой вариант кактит.

Для отстойного примера - катит. На таких примерах потом вырастают программисты с кривыми руками, с которыми невозможно работать

Цитата(Heremum @  5.5.2006,  12:39 Найти цитируемый пост)
В третьих: теперь объясните мне, программисту, который сам пишет полностью проект: зачем мне инкапсуляция, когда я и так знаю: куда соваться, а куда нет?

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

Цитата(Heremum @  5.5.2006,  12:39 Найти цитируемый пост)
Если у вас силёнок не хватает справиться с такой мелочью, как двойное удалении, то не надо говорить, что человек который это может - балбес неграмотный. Вы так не сказали, но и так из контекста ясно, что это имелось ввиду.Дожили, за знания уже репутацию понижают  

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

Цитата(Heremum @  5.5.2006,  12:39 Найти цитируемый пост)
 не говорил, что он удобнее. Я говорил, что я бы не маялся с векторами, потому что являюсь тем, кого кличут "велосипедистами": я пишу всегда всё своё. 

Ну-ну  smile  

Автор: Fazil6 5.5.2006, 14:49
Цитата

Блин я б тебе еще рейтинг понизил, если б мог

за что? Я с твоим постом полностью согласен, так что тогда уж всем нам включая и тебя. И еще: рейтинг на сырцах, а здесь Репутация  

Автор: cozzzy 5.5.2006, 15:17
Fazil6, не тебе, а Heremum'у  smile  

Автор: chipset 5.5.2006, 15:42
Цитата(Heremum @  5.5.2006,  03:39 Найти цитируемый пост)
В третьих: теперь объясните мне, программисту, который сам пишет полностью проект: зачем мне инкапсуляция, когда я и так знаю: куда соваться, а куда нет? smile 


Цитата(Heremum @  4.5.2006,  19:43 Найти цитируемый пост)
А я бы не маялся с вектором.

Такой код хорош только для программ меньше 1000 строк, для всего что больше (я не говорю про ситуацию с большем чем >1 программистом в команде) этого код ужасен.

а) Указатели не защищены.
б) Приватные данные вывернуты наружу (это С++ а не Си).
в) Не используется STL smile

И ещё, народ, не забываем злоупотреблять виртуальными деструкторами smile 

Автор: gepard 5.5.2006, 17:39
И в результате: ничего кроем нытия про то, что так труднее работать не видно.

Цитата(chipset @  5.5.2006,  15:42 Найти цитируемый пост)
а) Указатели не защищены.
б) Приватные данные вывернуты наружу (это С++ а не Си).

Один и тот же пункт, который перечёркивается тем, что человек пишет небольшую программу один.

Цитата(chipset @  5.5.2006,  15:42 Найти цитируемый пост)
в) Не используется STL

Вообще не аргумент. 

Автор: sergejzr 5.5.2006, 19:32
Эта тема закрывается. 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)