![]() |
Модераторы: LSD, AntonSaburov |
![]() ![]() ![]() |
|
Kratom |
|
|||
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 17.3.2009 Репутация: нет Всего: нет |
Всем здрасте, начал изучать java, до этого программированием не занимался(не считая калькуляторов на разных языках), о базовых понятих класса почитал , но все равно не понятно как строить программу и как это все использовать. Сейчас решаю задачу с сайта training.ru, она является тестовой для поступающих учиться на их курсы.
************************************************************ Цель: Демонстрация навыков объектно-ориентированного подхода и аналитического мышления. Формулировка: написать программу расчета зарплаты сотрудникам некой IT-компании. Ниже список сотрудников: EMPLOYEE ROLE PROJECT(S) FIXED_SALARY EXPERIENCE (YEARS) ---------------------------------------------------------------------------------------------------------- Ivanov Ivan Developer Chart Editor (fixed cost), 1700 0,5 Petrov Petr Developer Employment System 2000 2,0 Mike Manager Chart Editor (fixed cost), 6000 4,0 Employment System, Bank Transaction Jim Developer Chart Editor (fixed cost) 3500 2,0 Где, EMPLOYEE – полное имя сотрудника ROLE - должность PROJECT – название актуальных проектов сотрудника Fixed cost – маркер – проект с ограниченным бюджетом FIXED_SALARY – фиксированный оклад EXPERIENCE – стаж работы Условия: Developer может принимать участие только на одном проекте. Расчет бонусов: 1. 50 за каждый год после одного года работы 2. 500 за каждый проект, у которого неограниченный бюджет Ввод/Вывод: Результат работы программы должен выводить в консоль список имен сотрудников с указанием полной зарплаты (оклад + бонусы), отсортированный по зарплате. Результат работы должен представлять собой ZIP-архив с исходными кодами приложения и директорией build содержащая скомпилированное, готовое к запуску приложение, если необходимо - инструкция. ******************************************************** Вот первый набросок package raschet; import java.io.*; public class Employee { //данные класса. String Name; String Role; float experience; String [][] projects; float FixedSalary; public static void main(String[] args){ ******** } public class Developer extends Employee { ******** } } класс предок Employee c переменными содержащими сведения из таблицы, в том числе двумерный массив содержащий названия проектов и идентификатор фиксированного или не фиксированного бюджета. В нем же абстрактный метод, назовем его getSalary реализация его будет содержаться в подклассах девелопер и менеджер, так как у менеджеров по другому зарплата считается, а если девелопер будет задействован более чем в двух проектах программа должна выдавать ошибку. Далее создаются три объекта типа девелопер и один типа менеджер, в них заносятся данные, а дальше в методе мейн выводятся в консоль с использованием метода getSalary, сортировку пока не трогаю с ней и сам разберусь. Да, и все это будет в одном файле, после метода мейн будут идти объявления класса девелопер и манагер, в теле мейн создание экземпляров этих классов, и распечатка. Просьба общую концепцию подсказать, чисто теоретически. |
|||
|
||||
frikey |
|
|||
![]() Senior Sys Engineer Профиль Группа: Участник Сообщений: 31 Регистрация: 3.10.2008 Где: Russia, Samara Репутация: нет Всего: нет |
Вот этого точно не стоит делать. Помести лучше каждый класс в отдельный файл. |
|||
|
||||
Connie |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 382 Регистрация: 12.8.2008 Репутация: 1 Всего: 9 |
http://www.java-course.ru/
и было бы неплохо про объектно ориентированное программирование почитать, мне в свое время помогла и понравилась книга Gordon Dodril C++ LANGUAGE TUTORIAL поищите ее в сети, ничего, что она про С++ основные принципы и там и в java схожи |
|||
|
||||
Данкинг |
|
|||
![]() Yersinia pestis ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 8302 Регистрация: 7.11.2006 Где: მოსკოვი Репутация: нет Всего: 130 |
-------------------- There's nothing left but silent epitaphs. |
|||
|
||||
cube |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 291 Регистрация: 11.4.2007 Репутация: 2 Всего: 3 |
да разницы нет, с чего начинать... Идею ты понял правильно ;) Классы девелопер и манагер отдельно от мэйн класса их нафиг ;) и Employee тоже ;) в Employee как ты правильно все написал будет основной код, этот класс ты будешь расширять как Девелопером так и Манагером Но вот только я бы посоветовал написать тебе еще один класс например EmployeeList в котором будет основное поле List<Employee> list = new ArrayList.... и все мотоды например public List<Employee> getManagers() {} // здесь будешь возвращать список всех менеджеров public List<Employee> getDevelopers() {} // здесь будешь возвращать список всех девелоперов public double getAmountByEmloyee(Employee emp) {} // здесь сумму по конкретному челу (будь то менеджер, или девелопер) public List<String> getProjectsByEmloyee(Employee emp) {} // здесь будешь возвращать список названий проектов будет еще один private метод который загрузит из базы данных или из какого-то файла или еще от куда нибудь список list преимущества такой конструкции - со временем ты можешь ее расширать добавляя новые объекты и методы для работы с ними, удачи ;) |
|||
|
||||
rimidal |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 25.9.2007 Репутация: 1 Всего: 1 |
Еще как есть. Любой предмет изучается прежде всего согласно истории его развития. Вот и программирование так. Сначала были процедуры, потом появились модули и только потом ООП (это быстро и на пальцах). Изучать надо все по порядку. Начинать изучение программирования с явы это все равно что учиться летать сразу на аэробусе. Вобщем изначально надо посидеть хотябы с полгодика на паскале (ну или чем-либо подобном), так сказать "пройти курс молодого бойца", а уж потом начинать изучать ООП и смотреть в сторону явы. |
|||
|
||||
lihusha |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 73 Регистрация: 8.6.2008 Репутация: нет Всего: нет |
Kratom, советую почитать книгу Лафоре "Объектно-ориентированное программирование в С++"
Очень доступно для новичков. |
|||
|
||||
Fieral |
|
|||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 250 Регистрация: 10.12.2007 Репутация: нет Всего: 1 |
Ога. Пусть с перфокарт начинает. А нет - лучше с паяльника. Автор, идите вот сюда: http://www.java-course.ru/ --------------------
Если собака свернулась калачиком, значит будет дождь, а если сидит выпучив глаза, значит у неё запор. |
|||
|
||||
Kratom |
|
||||||
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 17.3.2009 Репутация: нет Всего: нет |
за ссылку спасибо, сайт уже телепортом сливаю, то что нужно для начала изучения EE. Но пока рано читать. Щас онлайн курс с progs.biz курю. А с книжками по с++ лучше пока попуститься, я так быстро не впитываю. Добавлено через 10 минут и 40 секунд
слабо понимаю, с утра напишу примитивней, потом попробую твой класс реализовать |
||||||
|
|||||||
cube |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 291 Регистрация: 11.4.2007 Репутация: 2 Всего: 3 |
Пиши как тебе удобнее и не обязательно мой класс реализовывать ;) Если появятся вопросы спрашивай, поможем ;) |
|||
|
||||
rimidal |
|
|||
Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 25.9.2007 Репутация: 1 Всего: 1 |
А при чем здесь паяльник? Перфокарта - это всего лишь носитель информации. Где вы увидели что я предлагал использовать старое железо?. Kratom для начала вы взяли сложненькую задачу. Грамотно произвести декомпозицию задачи и разложить это все на классы это целое искусство. |
|||
|
||||
Kratom |
|
||||||
Новичок Профиль Группа: Участник Сообщений: 9 Регистрация: 17.3.2009 Репутация: нет Всего: нет |
Вот пока, что получается
Employee.java
developer.java
manager.java
Вопрос, как сделать чтоб цикл выполнялся количество раз равное количеству строк в двумерном массиве? ведь проектов у менеджера может быть больше чем три. Еще надо решить откуда брать данные сотрудников, по задачи можно вручную создавать экземпляры типа манагер и девелопер и вносить данные в тексте программы. Можно ли их забить в базу данных какую-нибудь что б с программой носить один файл базы данных или вообще что б таблица с данными как-нибудь в программу вообще зашита была. Чем для этого воспользоваться, какой манул покурит? |
||||||
|
|||||||
rimidal |
|
||||||
Шустрый ![]() Профиль Группа: Участник Сообщений: 51 Регистрация: 25.9.2007 Репутация: 1 Всего: 1 |
Ну вы сами уже ответили на свой вопрос. Надо использовать базы данных. Какую использовать зависит от задачи. Думаю вам подойдет SQLite ну или ей подобные. Только если вы захотите использовать БД то вам потребуеться паттерн DAO(http://ooad.asf.ru/). Кроме этого вам еще надо почитать про JDBC. Вобщем прочитать надо будет много чего. P.S. Рановато вы за эту задачку взялись. А вобще здесь много полезных ссылок - http://forum.vingrad.ru/forum/topic-9229/view-all.html |
||||||
|
|||||||
agR |
|
||||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 140 Регистрация: 19.7.2006 Где: Киев Репутация: 2 Всего: 2 |
Исходя из вашего кода тут до БД еще курить и курить... Я бы посоветовал начать пока с начала, то бишь полистать книгу Эккеля "Thinking in Java" или же книгу Хорстманна "Java2. Библиотека профессионала" в 2-х томах, если конечно время позволяет ![]() Но без основ, вот так сходу, вряд ли что-то толковое получится. Например, относительно вашего кода: 1) Желательно (в принципе необходимо) придерживаться определенных правил (соглашений) написания кода: имена переменных должны начинаться с маленькой буквы, имена классов, наоборот - с большой. 2) Также следует придерживаться инкапсуляции данных: переменные экземпляров объявлять как private, а доступ к ним выполнять через общедоступные методы. 3)
Данный цикл никогда не выполнится, так как с самого начала условие не выполняется. Также, обычно счетчик используется в теле цикла, а у вас - нет. Если надо пройти по 2-мерному массиву, то это делается примерно так:
4) Мелочь, но все же, в большинстве случаев наиболее удобным является тип double, а не float. В общем, если есть время и желание, то лучше все таки почитать книги, тем более скорее всего на курсах расскажут то же самое, только за деньги (хотя смотря какие курсы - может и за большие деньги ![]() |
||||
|
|||||
Fieral |
|
||||
Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 250 Регистрация: 10.12.2007 Репутация: нет Всего: 1 |
грузите из текстового файла
затем "раскусываете" строку используя http://java.sun.com/j2se/1.4.2/docs/api/ja...gTokenizer.html а числа распознаёте методами Double.parse(...) Integer.parse(...) --------------------
Если собака свернулась калачиком, значит будет дождь, а если сидит выпучив глаза, значит у неё запор. |
||||
|
|||||
![]() ![]() ![]() |
Правила форума "Java" | |
|
Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, LSD, AntonSaburov, powerOn, tux, javastic. |
1 Пользователей читают эту тему (1 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Java: Общие вопросы | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |