powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Java [игнор отключен] [закрыт для гостей] / задача о персонале с фикс и повременной з.п.
25 сообщений из 70, страница 1 из 3
задача о персонале с фикс и повременной з.п.
    #39335373
andron81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Добрый всем день.

Пытаюсь освоить ООП и выбрал для этого JAVA. Поэтому просьба не пинать меня сразу :-)
посмотрел небольшой какой - то курс по ООП.

И захотелось реализовать какую-нибудь классическую задачку. Но тривиальные задачки на геометрические фигуры , животные и т.п. не интересно. И вот выбрал кое - что посерьезнее (правда это вопрос из собеседования на C#) . Итак, сама задача (возможно она знаменита) :

Построить три класса (базовый и 2 потомка), описывающих некоторых работников с почасовой оплатой (один из потомков) и фиксированной оплатой (второй потомок). Описать в базовом классе абстрактный метод для расчета среднемесячной заработной платы. Для «повременщиков» формула для расчета такова: «среднемесячная заработная плата = 20.8 * 8 * почасовую ставку», для работников с фиксированной оплатой «среднемесячная заработная плата = фиксированной месячной оплате».

a) Упорядочить всю последовательность работников по убыванию среднемесячного заработка. При совпадении зарплаты – упорядочивать данные по алфавиту по имени. Вывести идентификатор работника, имя и среднемесячный заработок для всех элементов списка.
b) Вывести первые 5 имен работников из полученного в пункте а) списка.
c) Вывести последние 3 идентификатора работников из полученного в пункте а) списка.
d) Организовать запись и чтение коллекции в/из файл.
e) Организовать обработку некорректного формата входного файла.

Если читать первую часть задания , то вроде как всё просто.
Описываем абстрактного предка с абстрактным методом GetSalary, в потомках описываем логику GetSalary в зависимости от класса: оклад ли там или повремёнка.
что-то вроде этого :

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
61.
62.
63.
64.
65.
66.
67.
68.
69.
70.
71.
package persony;
/*класс описывающий сотрудников на повременке*/

public class povremensh extends pers {
	
	 private static String name ;
	 private static int id ;
	 private static int time ;
	 private double salary ;
	 

	 public povremensh(int i, String name, int time) {
		
			this.name = name;
			this.time = time;
			
	}

	@Override
	double Get_Salary(float s) {
		this.salary=20.8 * 8 * s;
		 return this.salary;
	}
}

/*класс описывающий сотрудников на окладе*/

public class fix extends pers {

	 private static  String name ; /*имя сотрудника*/
	 private double salary ; /*зар. плата*/


	 public fix(int i, String name, double salary )  {
		 	this.salary = salary;
			this.name = name;
	}



	@Override
	double Get_Salary(float s) {
		this.salary=s;
		 return s;
	}


	 
}


/*Класс предок****************************/
abstract class pers {
	
	   
	
	abstract  double Get_Salary(float s) ;
	

}

public class main  {
	public static void main(String args[]) {

		fix f = new fix(1, "Маша", 25000);
		povremensh p = new povremensh(2, "Коля", 14);

		
			}

}



Но вопросы начинаются с нюансов а - е.
Выясняется , что работников много и их хотят сортировать . исходя из этого выходит как - то так:
1) таким образом встаёт вопрос о том как хранить входные данные. Понятно , что это либо массив , либо список. Допустим даже это массив из 10 сотрудников(упростим).
2) получается, что абсолютно ВСЕ сотрудники должны находиться в одном экземпляре некоего класса (а о нём ведь в задании ни слова), который наверно будет потомком fix и povremensh (а java разве позволяет это делать ? ).
3) таким образом массив создаем в этом классе .

Короче я возможно написал и полнейший бред, но поясните как я тогда должен проектировать свои классы ? интересна сама инициализация.
...
Рейтинг: 0 / 0
задача о персонале с фикс и повременной з.п.
    #39335388
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andron81,
1) либо в памяти коллекция либо в субд.
2) зачем?
...
Рейтинг: 0 / 0
задача о персонале с фикс и повременной з.п.
    #39335391
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andron81,

Классы именуются с заглавной буквы строго на английском языке.
http://www.oracle.com/technetwork/java/codeconvtoc-136057.html

Вам в коде не хватает вот этого:

Код: java
1.
2.
3.
pers[] employees = new pers[10];
pers[0] = new fix(1, "Маша", 25000);
pers[1] = new povremensh(2, "Коля", 14);
...
Рейтинг: 0 / 0
задача о персонале с фикс и повременной з.п.
    #39335458
andron81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowiczandron81,

Классы именуются с заглавной буквы строго на английском языке.
http://www.oracle.com/technetwork/java/codeconvtoc-136057.html

Вам в коде не хватает вот этого:

Код: java
1.
2.
3.
pers[] employees = new pers[10];
pers[0] = new fix(1, "Маша", 25000);
pers[1] = new povremensh(2, "Коля", 14);


Спасибо за ответ.
Вы наверно вот так хотели написать ?
Код: java
1.
2.
3.
		pers[] employees = new pers[10];
		employees[0] = new fix(1, "Маша", 25000);
		employees[1] = new povremensh(2, "Коля", 14);



я наверно крайне невежественный в ООП. Но не понимаю как скажем в экземпляре "employees[0]" класса "pers" есть конструктор от класса fix, тогда как класс fix это наследник от pers , а не наоборот.
...
Рейтинг: 0 / 0
задача о персонале с фикс и повременной з.п.
    #39335466
andron81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
спасибо.


Petro123andron81,
1) либо в памяти коллекция либо в субд.


ну коллекция это круто ещё и не смотрел я эту тему.
думаю СУБД тоже излишне в данной задачке. тут ведь речь идёт о файлах

А вот массивы в самый раз

Petro1232) зачем?


Затем что я так понимал, но из сообщения ниже понял, что действительно незачем :-)
...
Рейтинг: 0 / 0
задача о персонале с фикс и повременной з.п.
    #39335580
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andron81Вы наверно вот так хотели написать ?

Ну, да. Многопоточность дала сбой.

andron81я наверно крайне невежественный в ООП. Но не понимаю как скажем в экземпляре "employees[0]" класса "pers" есть конструктор от класса fix, тогда как класс fix это наследник от pers , а не наоборот.
Класс FixedPriceEmployee расширяет класс Employee.
Экземпляр FixedPriceEmployee является так же экземпляром Employee. Поэтому всё что может Employee может и FixedPriceEmployee.
Поэтому Employee e = new FixedPriceEmployee();

А вот конструкция
FixedPriceEmployee fpe = new Employee();
уже не допустима, потому что у FixedPriceEmployee могут быть методы, которые Employee не реализует. Просто сосредоточтесь и подумайте над этим. И переходите на внятные имена.
...
Рейтинг: 0 / 0
задача о персонале с фикс и повременной з.п.
    #39335796
andron81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
запутался я .
вы пишите :
BlazkowiczЭкземпляр FixedPriceEmployee является так же экземпляром Employee. Поэтому всё что может Employee может и FixedPriceEmployee.
Поэтому Employee e = new FixedPriceEmployee();


но в Employee нет конструктора FixedPriceEmployee()
конструкция Employee e = new FixedPriceEmployee(2, "Коля", 14); разве прокатит?

код переписал как вы хотели


Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
abstract class Employee{
	
	   
	
	abstract  double Get_Salary(float s) ;
	

}



public class FixedPriceEmployee  extends Employee {

	 private static  String name ; /*имя сотрудника*/
	 private double salary ; /*зар. плата*/


	 public FixedPriceEmployee(int i, String name, double salary )  {
		 	this.salary = salary;
			this.name = name;
	}



	@Override
	double Get_Salary(float s) {
		this.salary=s;
		 return s;
	}


	 
}
...
Рейтинг: 0 / 0
задача о персонале с фикс и повременной з.п.
    #39335800
andron81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
и самое интересное , что да, работает.

но это я и не пойму .
вот этим мы создаём экземпляр e:
Employee e = new FixedPriceEmployee(2, "Коля", 14);

я думал , что Employee это предок FixedPriceEmployee , а значит потомок FixedPriceEmployee наследует теоретически всё от Employee.
(об этом свидетельствует строка public class FixedPriceEmployee extends Employee )
но никак не наоборот. Выходит класс "Employee" ничего не знает об "FixedPriceEmployee" , в том числе и о конструкторе FixedPriceEmployee.

а выходит нет - знает !
...
Рейтинг: 0 / 0
задача о персонале с фикс и повременной з.п.
    #39335806
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andron81,
полиморфизм - один из китов ООП. Совсем рядом.
...
Рейтинг: 0 / 0
задача о персонале с фикс и повременной з.п.
    #39335811
andron81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123andron81,
полиморфизм - один из китов ООП. Совсем рядом.

да , но тут его не понимаю ))) не могли бы пояснить ?
...
Рейтинг: 0 / 0
задача о персонале с фикс и повременной з.п.
    #39335892
Nixic
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andron81,

https://www.youtube.com/user/pro100fox2/videos
...
Рейтинг: 0 / 0
задача о персонале с фикс и повременной з.п.
    #39335894
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andron81и самое интересное , что да, работает.
Я бы на вашем месте, разобрался с тем почему так работает. Вы вместо этого пытаетесь натянуть свои фантазии на факты. А они не совпадают.

andron81Выходит класс "Employee" ничего не знает об "FixedPriceEmployee" , в том числе и о конструкторе FixedPriceEmployee.
а выходит нет - знает !
Нет, не знает. Почему вы решили то знает? Конструкторы это отдельная тема. Конструкторы FixedPriceEmployee явно и не явно вызывают конструкторы Employee.
...
Рейтинг: 0 / 0
задача о персонале с фикс и повременной з.п.
    #39335924
andron81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
BlazkowiczЯ бы на вашем месте, разобрался с тем почему так работает. Вы вместо этого пытаетесь натянуть свои фантазии на факты. А они не совпадают.

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


BlazkowiczAndron81Выходит класс "Employee" ничего не знает об "FixedPriceEmployee", в том числе и о конструкторе FixedPriceEmployee.
а выходит нет - знает !

Нет, не знает. Почему вы решили то знает?


потому как вот это:
Employee e = new FixedPriceEmployee(2, "Коля", 14);
я понимаю так: грубо говоря "e" делаем типа класса "Employee". А после "=" начинаются непонятные моменты : делаем инициализацию FixedPriceEmployee(2, "Коля", 14). тогда как FixedPriceEmployee это метод не из Employee, а из класса FixedPriceEmployee. А класс FixedPriceEmployee это наследник Employee, а не наоборот, поэтому непонятно как мы можем применить этот метод из Employee.

то есть вот так было бы понятно:
FixedPriceEmployee e = new FixedPriceEmployee(2, "Коля", 14);
так как "e" мы делаем типом FixedPriceEmployee и поэтому можем в инициализации тут же вызвать метод FixedPriceEmployee(параметры)

а в случае Employee e = new FixedPriceEmployee(2, "Коля", 14)
в моём понимании мы делаем e типа Employee, но этот класс ничего не знает о существовании "FixedPriceEmployee"

Blazkowicz Конструкторы FixedPriceEmployee явно и не явно вызывают конструкторы Employee.

это я понимаю

на всякий случай привожу ещё раз код

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
abstract class Employee{
	
	   
	
	abstract  double Get_Salary(float s) ;
	

}



public class FixedPriceEmployee  extends Employee {

	 private static  String name ; /*имя сотрудника*/
	 private double salary ; /*зар. плата*/


	 public FixedPriceEmployee(int i, String name, double salary )  {
		 	this.salary = salary;
			this.name = name;
	}



	@Override
	double Get_Salary(float s) {
		this.salary=s;
		 return s;
	}


	 
}
...
Рейтинг: 0 / 0
задача о персонале с фикс и повременной з.п.
    #39335955
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andron81,

Employee e - это переменная, которая указывает на объект типа Employee.
new FixedPriceEmployee() - это конструктор, который создаёт новый объект типа FixedPriceEmployee.
Является ли объект типа FixedPriceEmployee так же объектом типа Employee? Да!
Значит переменная типа Employee может ссылаться и на вновь созданный объект.

Что в этой логике не понятного?
...
Рейтинг: 0 / 0
задача о персонале с фикс и повременной з.п.
    #39336033
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andron81,
Юмор люблю).
Я не пойму, это вы тестируете Blazkowicz или он вас? ))
Nixic вам дал ссылку. Вы её изучили?
Вникайте во всё что вам дают. А потом спрашивайте...не торопясь.
imho
...
Рейтинг: 0 / 0
задача о персонале с фикс и повременной з.п.
    #39336146
andron81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123
Nixic вам дал ссылку. Вы её изучили?


ок. беру паузу тогда
...
Рейтинг: 0 / 0
задача о персонале с фикс и повременной з.п.
    #39336278
andron81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andron81,

как раз парень и задаёт волнующий для меня вопрос на 39:30
http://www.youtube.com/watch?v=9GdtWiovvIQ&list=PLmqFxxywkatR3qNmxqcFIHF9MN2-_eteU
...
Рейтинг: 0 / 0
задача о персонале с фикс и повременной з.п.
    #39336287
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andron81,

Добавьте в ваш пример помимо getSalary методы уникальные для каждого типа.
И поэксперементируйте в IDE с тем как эти методы вызываются.
...
Рейтинг: 0 / 0
задача о персонале с фикс и повременной з.п.
    #39336289
Фотография Blazkowicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowiczandron81,

Добавьте в ваш пример помимо getSalary методы уникальные для каждого типа.
И поэксперементируйте в IDE с тем как эти методы вызываются.
Все методы сделайте public, чтобы они были виртуальными.
...
Рейтинг: 0 / 0
задача о персонале с фикс и повременной з.п.
    #39336292
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andron81то есть берем FixedPriceEmployee и обращаемся с ним как Employee . таким образом
это и есть полиморфизм1
andron81получаем весь фарш Employee , но явным образом обращаться к FixedPriceEmployee мы уже не можем .
нечего не понял.
- в конструкторе наследника нужно вызывать супер класса конструктор.
- в коде в переменной суперкласса программа автоматом вызовет процедуру наследника.
Это полиморфизм2
...
Рейтинг: 0 / 0
задача о персонале с фикс и повременной з.п.
    #39336295
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andron81,

Код: java
1.
2.
3.
4.
5.
6.
7.
8.
9.
class Foo {
    Foo(String str) { }
}

class Bar extends Foo {
    Bar(String str) {
        super(str);
    }
}
...
Рейтинг: 0 / 0
задача о персонале с фикс и повременной з.п.
    #39336309
andron81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123andron81получаем весь фарш Employee , но явным образом обращаться к FixedPriceEmployee мы уже не можем .
ничего не понял.


я имел ввиду, что мы уже не можем обратиться к методам FixedPriceEmployee если их нет в предке.
ладно... проехали
...
Рейтинг: 0 / 0
задача о персонале с фикс и повременной з.п.
    #39336334
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
andron81я имел ввиду, что мы уже не можем обратиться к методам FixedPriceEmployee если их нет в предке.
ладно... проехали
- приведение типов если очень надо
http://ru.stackoverflow.com/questions/271985/Явное-приведение-типов
...
Рейтинг: 0 / 0
задача о персонале с фикс и повременной з.п.
    #39336969
andron81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123andron81я имел ввиду, что мы уже не можем обратиться к методам FixedPriceEmployee если их нет в предке.
ладно... проехали
- приведение типов если очень надо
http://ru.stackoverflow.com/questions/271985/Явное-приведение-типов

в такие дебри пока не лезу
...
Рейтинг: 0 / 0
задача о персонале с фикс и повременной з.п.
    #39338327
andron81
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Blazkowicz
Код: java
1.
2.
3.
pers[] employees = new pers[10];
pers[0] = new fix(1, "Маша", 25000);
pers[1] = new povremensh(2, "Коля", 14);




подскажите, а вот если мне нужно сортировать элементы я вынужден буду тупо общаться тогда с элементами своего массива посредством Get, Set-ов из метода Main ?
а есть ли другие способы ?
...
Рейтинг: 0 / 0
25 сообщений из 70, страница 1 из 3
Форумы / Java [игнор отключен] [закрыт для гостей] / задача о персонале с фикс и повременной з.п.
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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