|
|
|
тестовое задание
|
|||
|---|---|---|---|
|
#18+
Здравствуйте! тестовое задание : Задача создать GUI приложение для конвертации файлов данных разных форматов. Данными в приложении является массив точек (x, y). 1. Сделать поддержку разных форматов хранения координат – текстовый, бинарный, xml. 2. Создать тестовый файл с большим объемом данных (порядка миллиона точек) 3. Создать GUI приложение, в котором есть возможность конвертировать файл данных в любой из поддерживаемых форматов. В процессе конвертации отображать диалоговое окно, отображающее % конвертации с кнопкой “Отмена”. Примечания. Приветствуется документирование кода. возможно ли сделать это тестовое задание , если я прочел в thinkin in java примерно половину( до 8 главы ), параллельно Хорстмана читаю. ну конечно это все фигня . при желании можно в космос полететь(с) я не прошу его сделать) ткните меня, что мне надо прочитать) как примерно его делать . с чего начинать? на сколько оно сложное? срок 4 дня. спасибо!) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2012, 20:28:48 |
|
||
|
тестовое задание
|
|||
|---|---|---|---|
|
#18+
Начни с того что напиши простое консольное приложение которому передаются в качестве параметров имя входного файла и в какой его конвертировать. Читай потоки ввода и вывода и гугл тебе в помощь. Дальше нацепишь GUI на это все. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2012, 20:46:10 |
|
||
|
тестовое задание
|
|||
|---|---|---|---|
|
#18+
spbsmile1. Сделать поддержку разных форматов хранения координат – текстовый, бинарный, xml. Главное будут смотреть здесь. Тут от вас ожидают использование шаблона "factory method". ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2012, 20:48:34 |
|
||
|
тестовое задание
|
|||
|---|---|---|---|
|
#18+
spbsmile, Не так уж важно, что Вы сделаете. Важно, как Вы рассуждаете. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2012, 21:04:53 |
|
||
|
тестовое задание
|
|||
|---|---|---|---|
|
#18+
Leonidvspbsmile1. Сделать поддержку разных форматов хранения координат – текстовый, бинарный, xml. Главное будут смотреть здесь. Тут от вас ожидают использование шаблона "factory method".Ну здрасти приехали. Factory это creational pattern. Что вы тут собираетесь криэйтить? Разумеется, в этом месте надо применять что-то из behavioural паттернов. Например - стратегия, или тимплейт, или их помесь, или еще чего - способов решения дохрена. А вы мало того, что привязваете автора к одному конкретному решению, так еще и само решение неправильное предлагаете. Начинающие программисты должны с пеленок знать, что в программировании небывает никаких абсолютных истин ("делай так и точка!"), что решений всегда много, и что мастерство программиста заключается в нахождении правильного компромисного решения в отдельной взятой задаче. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2012, 21:38:40 |
|
||
|
тестовое задание
|
|||
|---|---|---|---|
|
#18+
заданиеЗадача создать GUI приложение для конвертации файлов данных разных форматов svenomLeonidvпропущено... Главное будут смотреть здесь. Тут от вас ожидают использование шаблона "factory method".Ну здрасти приехали. Factory это creational pattern. Что вы тут собираетесь криэйтить? Разумеется, в этом месте надо применять что-то из behavioural паттернов. GoF перечитай, тот раздел, где про factory method говорится. Если есть обоснованное суждение, почему здесь не подходи фабричный метод - обоснуй. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2012, 21:45:45 |
|
||
|
тестовое задание
|
|||
|---|---|---|---|
|
#18+
авторЕсли есть обоснованное суждение, почему здесь не подходи фабричный метод - обоснуй.Обоснование очень простое - тут нечего создавать. Для того, что бы наклепать по одному инстансу "сохранятеля" в XML, текст и т.д.. никакой фактори не нужен. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2012, 21:55:30 |
|
||
|
тестовое задание
|
|||
|---|---|---|---|
|
#18+
svenomавторЕсли есть обоснованное суждение, почему здесь не подходи фабричный метод - обоснуй.Обоснование очень простое - тут нечего создавать. Для того, что бы наклепать по одному инстансу "сохранятеля" в XML, текст и т.д.. никакой фактори не нужен. Я же не зря задание скопировал. У него не только "сохранятель" у него и "считыватель" - классический пример фабричного метода. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2012, 22:04:34 |
|
||
|
тестовое задание
|
|||
|---|---|---|---|
|
#18+
spbsmile3. Создать GUI приложение, в котором есть возможность конвертировать файл данных в любой из поддерживаемых форматов. В Ага, вот тут еще про SwingWorker надо почитать. Вообще, хорошее задание. Мне нравится - достаточно грамотно проверяет знание Swing и ООП. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2012, 22:07:52 |
|
||
|
тестовое задание
|
|||
|---|---|---|---|
|
#18+
Самое сложное - в одновременной конвертации и отрисовке прогресса. Самый простой способ этого добиться - делать так: 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 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2012, 22:08:52 |
|
||
|
тестовое задание
|
|||
|---|---|---|---|
|
#18+
LeonidvЯ же не зря задание скопировал. У него не только "сохранятель" у него и "считыватель" - классический пример фабричного метода.Мде, и вы мне еще советуете GoF почитать :) 1) Factory Method по своему смыслу производит объекты, реализующие один и тот же интерфейс, поэтому подогнать под этот паттерн создание и "сохранятеля" и "считывателя" ну никак не получится. 2) То, про что вы говорите, называется Abstract Factory, а не Factory Method. Теперь моя очередь рекомендовать вам освежить в голове GoFа. 3) Ни Factory Method, ни Abstract Factory тут нафиг не сдались, ибо это тестовая задача, никакого смысла громоздить в ней эти конструкции нет. Достаточно сделать что-то типа (грубо) Код: java 1. 2. 3. 4. 5. 6. 7. и потенциальный работодатель уже будет писать кипятком. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2012, 22:11:03 |
|
||
|
тестовое задание
|
|||
|---|---|---|---|
|
#18+
public interface CoordinateProcessor { public List<Coordinate> read(File file); public void write(List<Coordinate> coordinates, File file) } public class XMLCoordinateProcessor implements CoordinateProcessor { ... } Только лучше все в память не загружать. Понятно, что задача учебная, но тем не менее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2012, 22:26:24 |
|
||
|
тестовое задание
|
|||
|---|---|---|---|
|
#18+
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. Если же не позволять редактировать данные (т.е. мы при запуске сразу знаем и формат входа, и формат вывода), то можно применить builder, тогда будет как-то так: Код: java 1. 2. 3. Судя по тому, насколько грамотно составлено ТЗ (например, пункт 2 проверяет классическую ошибку новичка, конкатенацию строк вместо использования StringBuilder при считывание текстового файла), работодатель ожидает чего-то, показывающий общий уровень владения ООП. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2012, 22:27:04 |
|
||
|
тестовое задание
|
|||
|---|---|---|---|
|
#18+
Йуный джавистЪТолько лучше все в память не загружать. Понятно, что задача учебная, но тем не менее.Ну опять стереотипы какие-то. Почему не загружать? Вы знаете, что из себя представляет класс "координата"? А что сколько их там будет? А как их тогда считывать, не загружая в память? Держать открытым файловый поток? А как долго держать? А кто его будет закрывать потом? То есть какая-то необоснованная додумка "не загружать память" сразу резко повышает сложность реализации. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2012, 22:32:29 |
|
||
|
тестовое задание
|
|||
|---|---|---|---|
|
#18+
Leonidv Код: java 1. Все, понял. Вы напрочь не понимаете, что такое фабричный метод, ибо то, что вы привели, это обычный статический метод и все. Даю вам маленький ликбез на эту тему. Вот пример использования фабричного метода: Код: java 1. 2. А вот его реализация (псевдокод): Код: java 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Идею улавливаете? Цель Factory Method - вернуть пользователю интерфейс , то есть, что бы пользователь не знал, с интансом какого класса он работает, и что бы ему не приходилось инстанцировать класс руками. В вашем же случае: 1) Нет никакой фабрики, есть просто какой-то статический метод 2) Если даже напрячься и попытаться воспринять ваш пример в качестве фабрики ... это все равно не получится, так как фабрика должна возвращать какой-то интерфейс, а ваш метод возвращает уже сами данные. Надо быть аккуратнее с советами - их лучше давать только тогда, когда понимаешь, о чем говоришь. К сожалению, это не ваш случаи. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2012, 22:41:22 |
|
||
|
тестовое задание
|
|||
|---|---|---|---|
|
#18+
Leonidvнапример, пункт 2 проверяет классическую ошибку новичка, конкатенацию строк вместо использования StringBuilder при считывание текстового файлаГде вы там вообще увидели конкатенацию строк? Что бы записать что-то в файл, нужно открыть поток и записать туда данные строка за строкой. Данные пишутся в поток, нет никакой конкатенации или StringBuilder ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2012, 22:44:16 |
|
||
|
тестовое задание
|
|||
|---|---|---|---|
|
#18+
svenomLeonidv Код: java 1. Все, понял. Вы напрочь не понимаете, что такое фабричный метод, ибо то, что вы привели, это обычный статический метод и все. Даю вам маленький ликбез на эту тему. Вот пример использования фабричного метода: Код: java 1. 2. А вот его реализация (псевдокод): Идею улавливаете? Идею фабричного метода я лет пять назад уловил. А вы вот почему-то идеи собеседников улавливать не хотите. Ну тогда я разжую: Код: java 1. 2. 3. 4. 5. 6. 7. Мне не нравятся названия XMLData и TXTData, ну да фиг с ним. Контракт Data можно изменить так, чтобы явно показать считывание данных: Код: java 1. В любом случае, предложенное вами решение, требующее n^2 классов, есть пример ужасного ООП. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2012, 23:00:18 |
|
||
|
тестовое задание
|
|||
|---|---|---|---|
|
#18+
У меня путаница в названиях. Вместо дата везде читать DataHandler. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2012, 23:02:24 |
|
||
|
тестовое задание
|
|||
|---|---|---|---|
|
#18+
Leonidv , Ок, тогда уже ближе. Остается вопрос - зачем вы сделали этот метод статическим? Что бы программист никак не смог протестировать зависимый от него класс без наличия реального файла? Пичалька. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2012, 23:07:03 |
|
||
|
тестовое задание
|
|||
|---|---|---|---|
|
#18+
LeonidvВ любом случае, предложенное вами решение, требующее n^2 классов, есть пример ужасного ООП.Где же вы там n^2 (это что, степень?) увидели? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2012, 23:08:49 |
|
||
|
тестовое задание
|
|||
|---|---|---|---|
|
#18+
svenom Leonidv , Ок, тогда уже ближе. Так изначально было. svenomОстается вопрос - зачем вы сделали этот метод статическим? Что бы программист никак не смог протестировать зависимый от него класс без наличия реального файла? Пичалька. Ну сделайте его не статическим. С точки зрения паттернов ООП должен быть именно статический метод. С точки зрения тестирования - обычный, согласен. По поводу n в квадрате. А у вас какая формула получается для вашего интерфейса? Я свои выводы уже приводил ранее. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 01.02.2012, 23:51:00 |
|
||
|
тестовое задание
|
|||
|---|---|---|---|
|
#18+
LeonidvС точки зрения паттернов ООП должен быть именно статический метод. С точки зрения ООП статических методов в Java коде не должно быть вообще. Они не обладают полноценным динамическим полиморфизмом поэтому к ООП не относятся. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2012, 00:11:55 |
|
||
|
тестовое задание
|
|||
|---|---|---|---|
|
#18+
spbsmile возможно ли сделать это тестовое задание , если я прочел в thinkin in java примерно половину( до 8 главы ), параллельно Хорстмана читаю. ну конечно это все фигня . при желании можно в космос полететь(с) я не прошу его сделать) ткните меня, что мне надо прочитать) как примерно его делать . с чего начинать? на сколько оно сложное? срок 4 дня. 1. Ты только не обижайся, но с твоим "опытом" получится говнокод, который работодатель всё равно выбросит в корзину и даже не будет тратить время на объяснения почему.. 2. Поэтому не советую тебе интенсивно ломать мозги в столь короткий срок. Лучше просто возьми это задание за основу и изучай спокойно, не торопясь, тщательно и глубоко, те темы, которое оно затрагивает. Потрать на это ОТ месяца времени. Если сейчас тупо нагуглишь сэмплов и свалишь всё в приложение, см. пункт 1. ))) 3. Кстати, читать лучше бы англоязычные учебники. На русском, кроме Эккеля и Портянкина, ничего толкового не издавалось.. 4. Для начала сделай консольное приложение. Затем консольное приложение с нормальным уровнем абстракции, приемами ООП, попробуй какой-то паттерн реализовать. Затем попробуй сделать на Swing. Затем прочитай Портянкина и сделай нормальное приложение на Swing. ))) 5. Всё сказанное - от души, пройдено лично в относительно недавнее время, испытано так сказать на себе.. 6. Задание интересное! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2012, 05:30:17 |
|
||
|
тестовое задание
|
|||
|---|---|---|---|
|
#18+
LeonidvС точки зрения паттернов ООП должен быть именно статический метод. Ну разумеется нет. Это вы просто на википедии такой пример посмотрели. Blazkowicz абсолютно верно объяснил, почему статики быть не должно (в реальности - почему ее еколичество должно стремиться к минимуму). LeonidvПо поводу n в квадрате. А у вас какая формула получается для вашего интерфейса? Я свои выводы уже приводил ранее.Формула? Формула чего? У меня ровно столько же классов, сколько и у вас. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2012, 08:06:16 |
|
||
|
тестовое задание
|
|||
|---|---|---|---|
|
#18+
svenomНу разумеется нет. Это вы просто на википедии такой пример посмотрели. В wikipedia я паттерны очень аккуртно смотрю. Там много чего мне не нравится. svenomBlazkowicz абсолютно верно объяснил, почему статики быть не должно (в реальности - почему ее еколичество должно стремиться к минимуму). Аргумент насчет тестирования для меня вполне убедителен, поэтому тут спорить не буду. Мое решения будет зависит от ситуации. Но я пока не встречал у себя такого, чтобы наличие статичного метода создавало проблемы с тестированием. Может быть. Только работать со статичными методами зачастую гораздо удобнее, чем с не статичными. Даже google guava вся на статике построена. Аналогично JUnit и еще кучу библиотек можно привести в пример. svenomФормула? Формула чего? У меня ровно столько же классов, сколько и у вас. Ровно столько же, сколько у меня не получится. У вас или n классов, или n^m, где n количество поддерживаемых входных данных, m - количество поддерживаемых выходных данных. Немного расширим задачу. Предположим, что количество входных файлов не соответствует количеству выходных. У вас получатся сущности с пустыми методами? ПМСМ, статичные методы плохи в ООП не тем, что они статичны, а тем, что получается вырожденные классы (без состояния). Примерно ваш случай. И в любом случае, фабричный метод может быть успешно применён и в вашем дизайне, и в моем. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.02.2012, 09:39:55 |
|
||
|
|

start [/forum/topic.php?fid=59&msg=37642814&tid=2132668]: |
0ms |
get settings: |
13ms |
get forum list: |
15ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
46ms |
get topic data: |
11ms |
get forum data: |
3ms |
get page messages: |
59ms |
get tp. blocked users: |
2ms |
| others: | 361ms |
| total: | 518ms |

| 0 / 0 |
