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

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

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


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

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


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

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

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

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


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

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

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

Вообще, хорошее задание. Мне нравится - достаточно грамотно проверяет знание Swing и ООП.
...
Рейтинг: 0 / 0
тестовое задание
    #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
тестовое задание
    #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
тестовое задание
    #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
тестовое задание
    #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
тестовое задание
    #37642909
svenom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Йуный джавистЪТолько лучше все в память не загружать. Понятно, что задача учебная, но тем не менее.Ну опять стереотипы какие-то. Почему не загружать? Вы знаете, что из себя представляет класс "координата"? А что сколько их там будет? А как их тогда считывать, не загружая в память? Держать открытым файловый поток? А как долго держать? А кто его будет закрывать потом?
То есть какая-то необоснованная додумка "не загружать память" сразу резко повышает сложность реализации.
...
Рейтинг: 0 / 0
тестовое задание
    #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
тестовое задание
    #37642928
svenom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonidvнапример, пункт 2 проверяет классическую ошибку новичка, конкатенацию строк вместо использования StringBuilder при считывание текстового файлаГде вы там вообще увидели конкатенацию строк? Что бы записать что-то в файл, нужно открыть поток и записать туда данные строка за строкой. Данные пишутся в поток, нет никакой конкатенации или StringBuilder
...
Рейтинг: 0 / 0
тестовое задание
    #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
тестовое задание
    #37642945
Leonidv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
У меня путаница в названиях. Вместо дата везде читать DataHandler.
...
Рейтинг: 0 / 0
тестовое задание
    #37642948
svenom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Leonidv ,
Ок, тогда уже ближе. Остается вопрос - зачем вы сделали этот метод статическим? Что бы программист никак не смог протестировать зависимый от него класс без наличия реального файла? Пичалька.
...
Рейтинг: 0 / 0
тестовое задание
    #37642951
svenom
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
LeonidvВ любом случае, предложенное вами решение, требующее n^2 классов, есть пример ужасного ООП.Где же вы там n^2 (это что, степень?) увидели?
...
Рейтинг: 0 / 0
тестовое задание
    #37642981
Leonidv
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
svenom Leonidv ,
Ок, тогда уже ближе.
Так изначально было.

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

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

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

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

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

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

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

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

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


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