Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / Java [игнор отключен] [закрыт для гостей] / тестовое задание / 25 сообщений из 28, страница 1 из 2
01.02.2012, 20:28:48
    #37642768
spbsmile
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
тестовое задание
Здравствуйте!

тестовое задание :

Задача создать GUI приложение для конвертации файлов данных разных форматов. Данными в приложении является массив точек (x, y).
1. Сделать поддержку разных форматов хранения координат – текстовый, бинарный, xml.
2. Создать тестовый файл с большим объемом данных (порядка миллиона точек)
3. Создать GUI приложение, в котором есть возможность конвертировать файл данных в любой из поддерживаемых форматов. В процессе конвертации отображать диалоговое окно, отображающее % конвертации с кнопкой “Отмена”.
Примечания.
Приветствуется документирование кода.


возможно ли сделать это тестовое задание , если я прочел в thinkin in java примерно половину( до 8 главы ), параллельно Хорстмана читаю.
ну конечно это все фигня . при желании можно в космос полететь(с)

я не прошу его сделать) ткните меня, что мне надо прочитать)
как примерно его делать . с чего начинать?
на сколько оно сложное?
срок 4 дня.


спасибо!)
...
Рейтинг: 0 / 0
01.02.2012, 20:46:10
    #37642793
crawfish
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
тестовое задание
Начни с того что напиши простое консольное приложение которому передаются в качестве параметров имя входного файла и в какой его конвертировать. Читай потоки ввода и вывода и гугл тебе в помощь. Дальше нацепишь GUI на это все.
...
Рейтинг: 0 / 0
01.02.2012, 20:48:34
    #37642796
Leonidv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
тестовое задание
spbsmile1. Сделать поддержку разных форматов хранения координат – текстовый, бинарный, xml.

Главное будут смотреть здесь. Тут от вас ожидают использование шаблона "factory method".
...
Рейтинг: 0 / 0
01.02.2012, 21:04:53
    #37642814
ShSerge
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
тестовое задание
spbsmile,

Не так уж важно, что Вы сделаете. Важно, как Вы рассуждаете.
...
Рейтинг: 0 / 0
01.02.2012, 21:38:40
    #37642857
svenom
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
тестовое задание
Leonidvspbsmile1. Сделать поддержку разных форматов хранения координат – текстовый, бинарный, xml.

Главное будут смотреть здесь. Тут от вас ожидают использование шаблона "factory method".Ну здрасти приехали. Factory это creational pattern. Что вы тут собираетесь криэйтить? Разумеется, в этом месте надо применять что-то из behavioural паттернов. Например - стратегия, или тимплейт, или их помесь, или еще чего - способов решения дохрена. А вы мало того, что привязваете автора к одному конкретному решению, так еще и само решение неправильное предлагаете.
Начинающие программисты должны с пеленок знать, что в программировании небывает никаких абсолютных истин ("делай так и точка!"), что решений всегда много, и что мастерство программиста заключается в нахождении правильного компромисного решения в отдельной взятой задаче.
...
Рейтинг: 0 / 0
01.02.2012, 21:45:45
    #37642861
Leonidv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
тестовое задание
заданиеЗадача создать GUI приложение для конвертации файлов данных разных форматов


svenomLeonidvпропущено...

Главное будут смотреть здесь. Тут от вас ожидают использование шаблона "factory method".Ну здрасти приехали. Factory это creational pattern. Что вы тут собираетесь криэйтить? Разумеется, в этом месте надо применять что-то из behavioural паттернов.

GoF перечитай, тот раздел, где про factory method говорится. Если есть обоснованное суждение, почему здесь не подходи фабричный метод - обоснуй.
...
Рейтинг: 0 / 0
01.02.2012, 21:55:30
    #37642868
svenom
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
тестовое задание
авторЕсли есть обоснованное суждение, почему здесь не подходи фабричный метод - обоснуй.Обоснование очень простое - тут нечего создавать. Для того, что бы наклепать по одному инстансу "сохранятеля" в XML, текст и т.д.. никакой фактори не нужен.
...
Рейтинг: 0 / 0
01.02.2012, 22:04:34
    #37642880
Leonidv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
тестовое задание
svenomавторЕсли есть обоснованное суждение, почему здесь не подходи фабричный метод - обоснуй.Обоснование очень простое - тут нечего создавать. Для того, что бы наклепать по одному инстансу "сохранятеля" в XML, текст и т.д.. никакой фактори не нужен.
Я же не зря задание скопировал. У него не только "сохранятель" у него и "считыватель" - классический пример фабричного метода.
...
Рейтинг: 0 / 0
01.02.2012, 22:07:52
    #37642884
Leonidv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
тестовое задание
spbsmile3. Создать GUI приложение, в котором есть возможность конвертировать файл данных в любой из поддерживаемых форматов. В
Ага, вот тут еще про SwingWorker надо почитать.

Вообще, хорошее задание. Мне нравится - достаточно грамотно проверяет знание Swing и ООП.
...
Рейтинг: 0 / 0
01.02.2012, 22:08:52
    #37642886
Йуный джавистЪ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
тестовое задание
Самое сложное - в одновременной конвертации и отрисовке прогресса.
Самый простой способ этого добиться - делать так:
http://docs.oracle.com/javase/6/docs/api/javax/swing/SwingWorker.html
Там есть пример с простыми числами, эквивалентный вашей задаче.

Для бинарного формата используйте ObjectInputStream и ObjectOutputStream.

Для текстового:
http://docs.oracle.com/javase/6/docs/api/java/io/PrintWriter.html
http://docs.oracle.com/javase/1.5.0/docs/api/java/util/Scanner.html

Для XML:
Чтение:
http://docs.oracle.com/javase/1.4.2/docs/api/javax/xml/parsers/SAXParser.html
Запись:
http://docs.oracle.com/javase/6/docs/api/javax/xml/stream/XMLOutputFactory.html
http://docs.oracle.com/javase/6/docs/api/javax/xml/stream/XMLStreamWriter.html
...
Рейтинг: 0 / 0
01.02.2012, 22:11:03
    #37642890
svenom
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
тестовое задание
LeonidvЯ же не зря задание скопировал. У него не только "сохранятель" у него и "считыватель" - классический пример фабричного метода.Мде, и вы мне еще советуете GoF почитать :)
1) Factory Method по своему смыслу производит объекты, реализующие один и тот же интерфейс, поэтому подогнать под этот паттерн создание и "сохранятеля" и "считывателя" ну никак не получится.
2) То, про что вы говорите, называется Abstract Factory, а не Factory Method. Теперь моя очередь рекомендовать вам освежить в голове GoFа.
3) Ни Factory Method, ни Abstract Factory тут нафиг не сдались, ибо это тестовая задача, никакого смысла громоздить в ней эти конструкции нет. Достаточно сделать что-то типа (грубо)
Код: java
1.
2.
3.
4.
5.
6.
7.
public interface CoordinateProcessor {
    public List<Coordinate> read(File file);
    public void write(List<Coordinate> coordinates, File file)
}
public class XMLCoordinateProcessor implements CoordinateProcessor {
    ...
}

и потенциальный работодатель уже будет писать кипятком.
...
Рейтинг: 0 / 0
01.02.2012, 22:26:24
    #37642902
Йуный джавистЪ
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
тестовое задание
public interface CoordinateProcessor {
public List<Coordinate> read(File file);
public void write(List<Coordinate> coordinates, File file)
}
public class XMLCoordinateProcessor implements CoordinateProcessor {
...
}

Только лучше все в память не загружать. Понятно, что задача учебная, но тем не менее.
...
Рейтинг: 0 / 0
01.02.2012, 22:27:04
    #37642904
Leonidv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
тестовое задание
svenom2) То, про что вы говорите, называется Abstract Factory, а не Factory Method. Теперь моя очередь рекомендовать вам освежить в голове GoFа.

Не надо за меня говорить, о чем я говорю. Я говорю именно о factory method.

svenom3) ибо это тестовая задача, никакого смысла громоздить в ней эти конструкции нет. Достаточно сделать что-то типа (грубо)
и потенциальный работодатель уже будет писать кипятком.
Вот как раз потому что это тестовая задача, и надо показать знание стандартных (ООП) приемов.

У вас нужно сколько конкретных реализаций CoordinateProcessor создать? n^2, где n число поддерживаемых форматов? (XMLtoBinaryProcessor, XMLtoXMLProcessor ... )

По сути. Тут два варианта использования, смотря как делать. Если позволить редактировать данные (в ТЗ этого нет, но я почему-то сразу представил себе табличку), то делаем как-то так (код не Java):
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
interface DataHandler {
 List<Coordinate> getData() 
 void save(SaveStrategy saver);
}

main {
 Date data = Data.loadFromFile(fileName) // фабричный метод
}



Если же не позволять редактировать данные (т.е. мы при запуске сразу знаем и формат входа, и формат вывода), то можно применить builder, тогда будет как-то так:

Код: java
1.
2.
3.
main {
 Processor processor = ProcessorBuilder.from(inputFileName).to(outputFileName)
}



Судя по тому, насколько грамотно составлено ТЗ (например, пункт 2 проверяет классическую ошибку новичка, конкатенацию строк вместо использования StringBuilder при считывание текстового файла), работодатель ожидает чего-то, показывающий общий уровень владения ООП.
...
Рейтинг: 0 / 0
01.02.2012, 22:32:29
    #37642909
svenom
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
тестовое задание
Йуный джавистЪТолько лучше все в память не загружать. Понятно, что задача учебная, но тем не менее.Ну опять стереотипы какие-то. Почему не загружать? Вы знаете, что из себя представляет класс "координата"? А что сколько их там будет? А как их тогда считывать, не загружая в память? Держать открытым файловый поток? А как долго держать? А кто его будет закрывать потом?
То есть какая-то необоснованная додумка "не загружать память" сразу резко повышает сложность реализации.
...
Рейтинг: 0 / 0
01.02.2012, 22:41:22
    #37642925
svenom
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
тестовое задание
Leonidv
Код: java
1.
Date data = Data.loadFromFile(fileName) // фабричный метод

Все, понял. Вы напрочь не понимаете, что такое фабричный метод, ибо то, что вы привели, это обычный статический метод и все. Даю вам маленький ликбез на эту тему.
Вот пример использования фабричного метода:
Код: java
1.
2.
SAXParserFactory factory = ...;
SAXParser parser = factory.newInstance();

А вот его реализация (псевдокод):
Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
public class SAXParserFactory {
    ...
    public SAXParser newInstance() {
        if (что-то) {
            return new CoolSAXParser();
        } else {
            return new BadSAXParser();
        }
    }
    ...
}

Идею улавливаете? Цель Factory Method - вернуть пользователю интерфейс , то есть, что бы пользователь не знал, с интансом какого класса он работает, и что бы ему не приходилось инстанцировать класс руками.
В вашем же случае:
1) Нет никакой фабрики, есть просто какой-то статический метод
2) Если даже напрячься и попытаться воспринять ваш пример в качестве фабрики ... это все равно не получится, так как фабрика должна возвращать какой-то интерфейс, а ваш метод возвращает уже сами данные.
Надо быть аккуратнее с советами - их лучше давать только тогда, когда понимаешь, о чем говоришь. К сожалению, это не ваш случаи.
...
Рейтинг: 0 / 0
01.02.2012, 22:44:16
    #37642928
svenom
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
тестовое задание
Leonidvнапример, пункт 2 проверяет классическую ошибку новичка, конкатенацию строк вместо использования StringBuilder при считывание текстового файлаГде вы там вообще увидели конкатенацию строк? Что бы записать что-то в файл, нужно открыть поток и записать туда данные строка за строкой. Данные пишутся в поток, нет никакой конкатенации или StringBuilder
...
Рейтинг: 0 / 0
01.02.2012, 23:00:18
    #37642942
Leonidv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
тестовое задание
svenomLeonidv
Код: java
1.
Date data = Data.loadFromFile(fileName) // фабричный метод

Все, понял. Вы напрочь не понимаете, что такое фабричный метод, ибо то, что вы привели, это обычный статический метод и все. Даю вам маленький ликбез на эту тему.
Вот пример использования фабричного метода:
Код: java
1.
2.
SAXParserFactory factory = ...;
SAXParser parser = factory.newInstance();

А вот его реализация (псевдокод):
Идею улавливаете?
Идею фабричного метода я лет пять назад уловил.
А вы вот почему-то идеи собеседников улавливать не хотите. Ну тогда я разжую:
Код: java
1.
2.
3.
4.
5.
6.
7.
DataHandler loadFromFile(String fileName) {
 if (filename.endWith(".xml") {
   return new XMLData(filename)
} else if (filename.endWith(.txt) {
  return new TXTData(filename)
} else if ....
}


Мне не нравятся названия XMLData и TXTData, ну да фиг с ним. Контракт Data можно изменить так, чтобы явно показать считывание данных:
Код: java
1.
Data implements Iterator<Coordinate>



В любом случае, предложенное вами решение, требующее n^2 классов, есть пример ужасного ООП.
...
Рейтинг: 0 / 0
01.02.2012, 23:02:24
    #37642945
Leonidv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
тестовое задание
У меня путаница в названиях. Вместо дата везде читать DataHandler.
...
Рейтинг: 0 / 0
01.02.2012, 23:07:03
    #37642948
svenom
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
тестовое задание
Leonidv ,
Ок, тогда уже ближе. Остается вопрос - зачем вы сделали этот метод статическим? Что бы программист никак не смог протестировать зависимый от него класс без наличия реального файла? Пичалька.
...
Рейтинг: 0 / 0
01.02.2012, 23:08:49
    #37642951
svenom
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
тестовое задание
LeonidvВ любом случае, предложенное вами решение, требующее n^2 классов, есть пример ужасного ООП.Где же вы там n^2 (это что, степень?) увидели?
...
Рейтинг: 0 / 0
01.02.2012, 23:51:00
    #37642981
Leonidv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
тестовое задание
svenom Leonidv ,
Ок, тогда уже ближе.
Так изначально было.

svenomОстается вопрос - зачем вы сделали этот метод статическим? Что бы программист никак не смог протестировать зависимый от него класс без наличия реального файла? Пичалька.
Ну сделайте его не статическим. С точки зрения паттернов ООП должен быть именно статический метод. С точки зрения тестирования - обычный, согласен.

По поводу n в квадрате. А у вас какая формула получается для вашего интерфейса? Я свои выводы уже приводил ранее.
...
Рейтинг: 0 / 0
02.02.2012, 00:11:55
    #37643004
Blazkowicz
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
тестовое задание
LeonidvС точки зрения паттернов ООП должен быть именно статический метод.
С точки зрения ООП статических методов в Java коде не должно быть вообще. Они не обладают полноценным динамическим полиморфизмом поэтому к ООП не относятся.
...
Рейтинг: 0 / 0
02.02.2012, 05:30:17
    #37643159
mesier
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
тестовое задание
spbsmile возможно ли сделать это тестовое задание , если я прочел в thinkin in java примерно половину( до 8 главы ), параллельно Хорстмана читаю. ну конечно это все фигня . при желании можно в космос полететь(с)
я не прошу его сделать) ткните меня, что мне надо прочитать)
как примерно его делать . с чего начинать?
на сколько оно сложное?
срок 4 дня.

1. Ты только не обижайся, но с твоим "опытом" получится говнокод, который работодатель всё равно выбросит в корзину и даже не будет тратить время на объяснения почему..
2. Поэтому не советую тебе интенсивно ломать мозги в столь короткий срок. Лучше просто возьми это задание за основу и изучай спокойно, не торопясь, тщательно и глубоко, те темы, которое оно затрагивает. Потрать на это ОТ месяца времени. Если сейчас тупо нагуглишь сэмплов и свалишь всё в приложение, см. пункт 1. )))
3. Кстати, читать лучше бы англоязычные учебники. На русском, кроме Эккеля и Портянкина, ничего толкового не издавалось..
4. Для начала сделай консольное приложение. Затем консольное приложение с нормальным уровнем абстракции, приемами ООП, попробуй какой-то паттерн реализовать. Затем попробуй сделать на Swing. Затем прочитай Портянкина и сделай нормальное приложение на Swing. )))
5. Всё сказанное - от души, пройдено лично в относительно недавнее время, испытано так сказать на себе..
6. Задание интересное!
...
Рейтинг: 0 / 0
02.02.2012, 08:06:16
    #37643194
svenom
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
тестовое задание
LeonidvС точки зрения паттернов ООП должен быть именно статический метод. Ну разумеется нет. Это вы просто на википедии такой пример посмотрели. Blazkowicz абсолютно верно объяснил, почему статики быть не должно (в реальности - почему ее еколичество должно стремиться к минимуму).
LeonidvПо поводу n в квадрате. А у вас какая формула получается для вашего интерфейса? Я свои выводы уже приводил ранее.Формула? Формула чего? У меня ровно столько же классов, сколько и у вас.
...
Рейтинг: 0 / 0
02.02.2012, 09:39:55
    #37643278
Leonidv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
тестовое задание
svenomНу разумеется нет. Это вы просто на википедии такой пример посмотрели.

В wikipedia я паттерны очень аккуртно смотрю. Там много чего мне не нравится.

svenomBlazkowicz абсолютно верно объяснил, почему статики быть не должно (в реальности - почему ее еколичество должно стремиться к минимуму). Аргумент насчет тестирования для меня вполне убедителен, поэтому тут спорить не буду. Мое решения будет зависит от ситуации. Но я пока не встречал у себя такого, чтобы наличие статичного метода создавало проблемы с тестированием.

Может быть. Только работать со статичными методами зачастую гораздо удобнее, чем с не статичными. Даже google guava вся на статике построена. Аналогично JUnit и еще кучу библиотек можно привести в пример.

svenomФормула? Формула чего? У меня ровно столько же классов, сколько и у вас.
Ровно столько же, сколько у меня не получится. У вас или n классов, или n^m, где n количество поддерживаемых входных данных, m - количество поддерживаемых выходных данных. Немного расширим задачу. Предположим, что количество входных файлов не соответствует количеству выходных. У вас получатся сущности с пустыми методами?

ПМСМ, статичные методы плохи в ООП не тем, что они статичны, а тем, что получается вырожденные классы (без состояния). Примерно ваш случай.

И в любом случае, фабричный метод может быть успешно применён и в вашем дизайне, и в моем.
...
Рейтинг: 0 / 0
Форумы / Java [игнор отключен] [закрыт для гостей] / тестовое задание / 25 сообщений из 28, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]