Civilization и Total War

 

Имя
Пароль  
Забыли пароль?
Регистрация


CIVru.com / "Совет по концепции" - "Мозговой штурм" / Задача для кодера
Версия для печати . Вверх
Автор Сообщение
Aku_Aku
Участник



Репутация: 1271430(???)
# Дата: 12 Апр 2007 18:14:54 Цитата

Нужно реализовать обект(ы) указанного класа использую технологию юнит-тестов


прошу модераторов дать в эту тему возможность атачмента файлов

Aku_Aku
Участник



Репутация: 1271430(???)
# Дата: 12 Апр 2007 18:16:52 Поправил: Aku_Aku Цитата

Пока кину в закодированом виде Подмигивание MIME-кодирование

Тотал понимает -- меню "Файл""Декодировать"

MIME-Version: 1.0
Content-Type: application/octet-stream; name="TownSystem.rar"
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="TownSystem.rar"

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

Invictus
Участник


Репутация: 2565840(???)
# Дата: 15 Апр 2007 21:27:54 Цитата

Расшифровал.

Юнит-тест, насколько я понял, класс TownTester.

Позволю себе прокомментировать процедуру теста
    void testSettlement() {
ASettlement* s = new TSettlement(); //Так название класса ASettlement или TSettlement?

s->people = 1000; //initial amount of people //Я бы не обращался напрямую к свойствам класса,
s->type = S_VILLAGE_WHEAT; //type of settlement //а создал методы доступа к ним.

APound* for_compare = new APound(100); //Объявление класса APound в других файлах я не нашел.

assertTrue( s->people == 1000 );
assertTrue( s->type == S_VILLAGE_WHEAT ); //Объявление константы S_VILLAGE_WHEAT я тоже не нашел.
assertTrue( s->produced == for_compare ); //Еще одна непонятка: что с чем сравнивается? Если цель
//сравнить указатель for_compare с указателем produced это
}; //правильно, а для сравнения содержимого такой код не катит.


Я бы написал эту процедуру так:
    void testSettlement() {
СSettlement* s = new СSettlement(1000,S_VILLAGE_WHEAT);

APound* for_compare = new APound(100);

assertTrue( s->GetPeople() == 1000 );
assertTrue( s->GetType() == S_VILLAGE_WHEAT );
assertTrue( s->GetProduced() == for_compare );

};


Ну и, собственно, класс СSettlement, исходя из того что у меня есть:
class CSettlement {
private:
int intPeople;
int intType;
APound *ptrProduced;
//protected:
public:
CSettlement():intPeople(0),intType(0),ptrProduced(new APound(100)){};
CSettlement(People,Type):intPeople(People),intType(Type),ptrProduced(new APound(100)){};
~CSettlement(){};

int GetPeople(){return intPeople;};
void SetPeople(int NewPeople){intPeople=NewPeople;};

int GetType(){return intType;};
void SetType(int NewType){intType=NewType;};

int GetProduced(){return ptrProduced;};
};



Правильно ли я все понял?

Invictus
Участник


Репутация: 2565840(???)
# Дата: 15 Апр 2007 21:43:55 Цитата

Кстати название MyTrueAsstest() очень оригинальное Улыбка

Aku_Aku
Участник



Репутация: 1271430(???)
# Дата: 15 Апр 2007 22:53:37 Цитата

Invictus:Юнит-тест, насколько я понял, класс TownTester.
Отлично!
Очень хорошо что тут есть люди понимающие что такое юнит-тест Подмигивание

Invictus://Так название класса
ASettlement или TSettlement?

Просто описка.. а исходя из того что без реализации соответствующих классов эта функция -- по сути псевдокод.. то и ничего страшного.
На этапе компиляции оно все равно ругнеться Подмигивание

Invictus:s->people = 1000; //initial amount of people //Я бы не обращался напрямую к
свойствам класса

Ну.. это и так понятно, но.. для целей тестирования так удобнее,
а в дальнейшем.. в любой момент можна сделать соответствующий рефакторинг

и еще.. данный синтаксис подходит (и предполагает) под реализацию с использованием конструкции __property -- тогда указанные проблемы вообще снимаються

Invictus://Объявление класса APound в
других файлах я не нашел.

Invictus://Объявление константы
S_VILLAGE_WHEAT я тоже не нашел.

Правильно.. указанная функция -- это псевдокод, по которому нужно корректная реализация.. в том и состоит задача
С чем ты и справился.. поздравляю Подмигивание


Invictus:assertTrue( s->produced == for_compare ); //Еще одна непонятка: что с чем сравнивается? Если цель
//сравнить указатель for_compare с указателем produced это
};//правильно, а для сравнения содержимого такой код не катит.


Для этого существует такая штука как перегрузка оператора сравнения

Invictus:Кстати название MyTrueAsstest() очень оригинальное
Данная реализация юнит-теста писалась по книге Кента Бека, для собственных нужд
Отсюда и такие названия, и некоторая корявость. Улыбка

Aku_Aku
Участник



Репутация: 1271430(???)
# Дата: 15 Апр 2007 23:21:03 Цитата

Ок.. тогда следующая задача

Значит так..
нужны классы инкапсулирующие свойства основных едениц измерения
APeople -- люди
AKoku -- еденица стоимости и потребления пищи
APound -- единица веса
должны они быть сделаны чтобы выглядеть как встроенные числовые типы
то есть, с перегрузкой математических операторов

Дальше.. нужно еще проработать классы ASettlement -- класс поселения,
а так же класс отряда ASquad.. так чтобы была отображена их общность, например в виде иерархии класов.

Дальше псевдокод тестов

void testSettlement() {
ASettlement* s = new ASettlement();//создаем объект динамически потому что так понадобиться в игре

s->people = APeople(1000); //initial amount of people
s->type = S_VILLAGE_WHEAT; //type of settlement

assertTrue( s->people == 1000 );
assertTrue( s->isType(S_VILLAGE_WHEAT) );

AKoku k = s->ProducedFood();

assertTrue( k.amount == AKoku(1000) );
assertTrue( k.weight == APound(100) );
};

void testKoku(){
AKoku koku(1000, S_WHEAT);//
assertTrue( k.amount == AKoku(1000) );

koku+=AKoku(100);

assertTrue( k.amount == AKoku(1100) );
assertTrue( k.weight == APound(1000) );
assertTrue( k.type == S_WHEAT );


APound p1(10, S_WHEAT);
APound p2(110, S_CORN);

assertTrue( k.type == p1.type );
assertTrue( k.weight != p1 );

assertTrue( k.type != p2.type );
assertTrue( k.weight == p2 );
};

Invictus
Участник


Репутация: 2565840(???)
# Дата: 16 Апр 2007 00:28:51 Поправил: Invictus Цитата

Aku_Aku:по сути псевдокод
Ну тесты предназначены для того чтобы выполняться... Подмигивание

Aku_Aku:и еще.. данный синтаксис подходит (и предполагает) под реализацию с использованием конструкции __property -- тогда указанные проблемы вообще снимаються
Можна и так, но для этого надо BCB или .NET.

Aku_Aku:Для этого существует такая штука как перегрузка оператора сравнения
Для этого надо знать что сравнивать.

Юнит-тест - это конечно хорошо, но обычное подробное описание требований к классу совсем не помешает.

Aku_Aku
Участник



Репутация: 1271430(???)
# Дата: 16 Апр 2007 10:11:39 Цитата

Invictus:Aku_Aku:по сути псевдокод
Ну тесты предназначены для того чтобы выполняться...

Хорошо что ты это понимаеш Подмигивание
Свою реализацию запускал? Есть зеленая линия?


Invictus:Можна и так, но для этого надо BCB или .NET.
Если мне не изменяет склероз.. у мелкомягких тоже подобная конструкция есть.. в сях.. только больно корявая.


Invictus:Aku_Aku:Для этого существует такая штука как перегрузка оператора сравнения
Для этого надо знать что сравнивать.

В тесте все указанно
Или может ты знаеш как можно сравнивать стековые объекты по указателю Широкая улыбка

Invictus:Юнит-тест - это конечно хорошо, но обычное подробное описание требований к классу совсем не помешает.
Если ты читал Кента.. то он какраз и предлагает технологию юнит-тестов для подробной разработки требований к класу -- очень гибкий и точный метод.
В этом -- я его последователь. Подмигивание

Invictus
Участник


Репутация: 2565840(???)
# Дата: 17 Апр 2007 00:26:12 Цитата

Aku_Aku:Есть зеленая линия?
Пока нету - т.к. нету всех нужных объявлений. Заглушками пока лень заниматься.


Aku_Aku:Invictus:Можна и так, но для этого надо BCB или .NET.
Если мне не изменяет склероз.. у мелкомягких тоже подобная конструкция есть.. в сях.. только больно корявая.

Имел ввиду Borland CBuilder и MS Visual Studio .NET, в Visual Studio 6 насколько помню - нету.
Но при желании можна легко такую же фичу сделать самостоятельно.

Aku_Aku:Если ты читал Кента.. то он какраз и предлагает технологию юнит-тестов для подробной разработки требований к класу -- очень гибкий и точный метод.
Саму работу Кента не читал, только обзор.
Насколько я понял, там параллельно наращиваются требования теста и функциональность класса.
Но это не освобождает от составления ТЗ.

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

Aku_Aku
Участник



Репутация: 1271430(???)
# Дата: 17 Апр 2007 18:44:57 Цитата

Invictus:Насколько я понял, там параллельно наращиваются требования теста и функциональность класса.
Но это не освобождает от составления ТЗ.

Ты все правильно понял.

О ТЗ.. это правильно, но не во всех проектах выходит выдержать это требование.
Какраз в таких случаях и помагает юнит-тестирование.
Когда требования недостаточно сформулированны и/или постоянно меняються.

Invictus:Если уж что-то кодить, то я бы хотел сразу знать что.
Т.е. список классов и что они должны делать - другими словами ТЗ подавайте...
А юнит-тесты я и сам могу сделать.

Что кодить.. мы об этом уже нафлудили хз сколько.
Да и.. я тебя в партнеры приглашаю ( С правом решать и предлагать ), а не в тупые кодеры.

И юнит-тесты -- это действительно тот метод, который я предлагаю использовать в совместной работы, для формулирования структуры классов и опробования различных алгоритмов.

Invictus
Участник


Репутация: 2565840(???)
# Дата: 18 Апр 2007 00:40:02 Цитата

Для экспериментов я бы использовал эксель.
Сейчас скину тебе на мыло файлик, я недавно побаловался чуть-чуть с симуляцией.

qbik
Участник


Репутация: 2000000(???)
# Дата: 17 Май 2007 14:38:43 Цитата

Aku_Aku:О ТЗ.. это правильно, но не во всех проектах выходит выдержать это требование.
Какраз в таких случаях и помагает юнит-тестирование.
Когда требования недостаточно сформулированны и/или постоянно меняються.


Не согласен с этим утверждением... ТЗ даже в этом случае сохраняется, только называется концепцией развития... Основные функции должны быть сделаны под жёстким ТЗ, а то это кол-во креативного флуда, будет опробовано к 2100 году...

Версия для печати . Вверх

ОСТАВЛЯТЬ СООБЩЕНИЯ МОГУТ ТОЛЬКО ЗАРЕГИСТРИРОВАННЫЕ ПОЛЬЗОВАТЕЛИ!

Администрация форума: editors@civru.com
Rambler's Top100
XML [?]