С Новым годом! Форум программистов, компьютерный форум, киберфорум
Java
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.78/9: Рейтинг темы: голосов - 9, средняя оценка - 4.78
0 / 0 / 0
Регистрация: 16.10.2013
Сообщений: 20

Основы ООП

05.11.2013, 20:33. Показов 1832. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Не могу понять некоторые вещи.
Постараюсь задавать вопросы последовательно .
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
import java.util.*;
 
/**
 * This program tests the Employee class.
 * @version 1.11 2004-02-19
 * @author Cay Horstmann
 */
public class EmployeeTest
{
   public static void main(String[] args)
   {
      // fill the staff array with three Employee objects
      Employee[] staff = new Employee[3];            //  1) Тут создается массив Staff,причем тут Employee? (я привык тут видеть тип)Или это массив класса Employee?
 
      staff[0] = new Employee("Carl Cracker", 75000, 1987, 12, 15);
      staff[1] = new Employee("Harry Hacker", 50000, 1989, 10, 1);
      staff[2] = new Employee("Tony Tester", 40000, 1990, 3, 15);
 
      // raise everyone's salary by 5%
      for (Employee e : staff)   // 2) Тут переменная е  получает значение массивов staff 0-3 ,опять,причем тут Емплое?
         e.raiseSalary(5);   //3)Переменная е -это ссылка метода raiseSalary?
 
      // print out information about all Employee objects
      for (Employee e : staff)
         System.out.println("name=" + e.getName() + ",salary=" + e.getSalary() + ",hireDay="
               + e.getHireDay());    //4)есть переменные name и т д . getname что делает?
   }
}
 
class Employee
{
   public Employee(String n, double s, int year, int month, int day)
   {
      name = n;
      salary = s;
      GregorianCalendar calendar = new GregorianCalendar(year, month - 1, day);
      // GregorianCalendar uses 0 for January
      hireDay = calendar.getTime();
   }
 
   public String getName()
   {
      return name;
   }
 
   public double getSalary()
   {
      return salary;
   }
 
   public Date getHireDay()
   {
      return hireDay;
   }
 
   public void raiseSalary(double byPercent)
   {
      double raise = salary * byPercent / 100;
      salary += raise;
   }
 
   private String name;
   private double salary;
   private Date hireDay;
}


Ну и очень буду благодарен за описание последовательности выполнения этого кода,желательно как для бабушки)

Добавлено через 10 минут
А,и что дают последние 3 строчки?
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
05.11.2013, 20:33
Ответы с готовыми решениями:

Основы ООП в языке Java
1. Описать класс "четырехугольник", члены класса – координаты 4-х точек. Предусмотреть в классе методы вычисления и вывода сведений о...

Основы web-технологий
Хочу пройти курсы по java, для зачисления на курс требуется сдать тест на основы web-технологий , что под этим понимается ? Что нужно...

Основы создания графических приложений в Java
в чём измеряется размер строк и столбцов, указываемый при создании графического компонента "Текстовая область" JTextArea ?

4
Почетный модератор
 Аватар для ildwine
6201 / 2963 / 1300
Регистрация: 04.03.2013
Сообщений: 5,797
Записей в блоге: 1
05.11.2013, 21:18
Цитата Сообщение от NaviCross Посмотреть сообщение
А,и что дают последние 3 строчки?
Декларация (объявление, описание) полей класса...

Добавлено через 3 минуты
Программа начинает выполняться с класса public class EmployeeTest, а именно его метода:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
public static void main(String[] args)
   {
      // fill the staff array with three Employee objects
      Employee[] staff = new Employee[3];            //  1) Тут создается массив Staff,причем тут Employee? (я привык тут видеть тип)Или это массив класса Employee?
 
      staff[0] = new Employee("Carl Cracker", 75000, 1987, 12, 15);
      staff[1] = new Employee("Harry Hacker", 50000, 1989, 10, 1);
      staff[2] = new Employee("Tony Tester", 40000, 1990, 3, 15);
 
      // raise everyone's salary by 5%
      for (Employee e : staff)   // 2) Тут переменная е  получает значение массивов staff 0-3 ,опять,причем тут Емплое?
         e.raiseSalary(5);   //3)Переменная е -это ссылка метода raiseSalary?
 
      // print out information about all Employee objects
      for (Employee e : staff)
         System.out.println("name=" + e.getName() + ",salary=" + e.getSalary() + ",hireDay="
               + e.getHireDay());    //4)есть переменные name и т д . getname что делает?
   }
1
34 / 34 / 5
Регистрация: 25.02.2013
Сообщений: 221
05.11.2013, 21:20
Последние 3 строчки это поля объекта Сотрудник. Доступ к ним осуществляется не напрямую, а через сеттеры и геттеры. Пример геттера:
Java
1
2
3
public String getName() {
      return name;
   }
Модификаторы доступа private инкапсулируют эти поля в конкретном экземпляре.
Java
1
Employee[] staff = new Employee[3];
Тут создаётся массив Сотрудников. Employee это ссылочный тип, int, double, float и тд тоже типы, но только примитивные.
Java
1
2
 for (Employee e : staff) 
         e.raiseSalary(5);
Это цикл foreach мы бежим по значениям массива staff (не по индексам), эти значения имеют тип Employee (что логично), вот они поочереди кладутся в переменную e. Потом на этой переменной могут вызываться любые методы этого типа(в данном случае повышение зарплаты).
Java
1
2
System.out.println("name=" + e.getName() + ",salary=" + e.getSalary() + ",hireDay="
               + e.getHireDay());    //4)есть переменные name и т д . getname что делает?
К полям объекта с модификатором доступа private мы не имеем доступа извне. Только через геттеры и сеттеры. Выше я о них немного рассказал.
1
Почетный модератор
 Аватар для ildwine
6201 / 2963 / 1300
Регистрация: 04.03.2013
Сообщений: 5,797
Записей в блоге: 1
05.11.2013, 21:52
Java
1
Employee[] staff = new Employee[3];
- создание массива объектов класса Employee, с именем staff и размером 3.

Добавлено через 2 минуты
Java
1
2
3
staff[0] = new Employee("Carl Cracker", 75000, 1987, 12, 15);
staff[1] = new Employee("Harry Hacker", 50000, 1989, 10, 1);
staff[2] = new Employee("Tony Tester", 40000, 1990, 3, 15);
- присвоение конкретных значений массиву сотрудников (создание объектов), путем вызова конструктора Employee с параметрами.

Добавлено через 2 минуты
ну концовка метода имеет комментарии...

Добавлено через 1 минуту
Второй класс вспомогательный, объекты которого мы создаем в классе EmployeeTest:
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
class Employee
{
   public Employee(String n, double s, int year, int month, int day)
   {
      name = n;
      salary = s;
      GregorianCalendar calendar = new GregorianCalendar(year, month - 1, day);
      // GregorianCalendar uses 0 for January
      hireDay = calendar.getTime();
   }
 
   public String getName()
   {
      return name;
   }
 
   public double getSalary()
   {
      return salary;
   }
 
   public Date getHireDay()
   {
      return hireDay;
   }
 
   public void raiseSalary(double byPercent)
   {
      double raise = salary * byPercent / 100;
      salary += raise;
   }
 
   private String name;
   private double salary;
   private Date hireDay;
}
Добавлено через 1 минуту
Конструктор (метод вызываемый при создании объекта):
Java
1
2
3
4
5
6
7
8
public Employee(String n, double s, int year, int month, int day)
   {
      name = n;
      salary = s;
      GregorianCalendar calendar = new GregorianCalendar(year, month - 1, day);
      // GregorianCalendar uses 0 for January
      hireDay = calendar.getTime();
   }
вызывается он вот здесь:
staff[0] = new Employee("Carl Cracker", 75000, 1987, 12, 15);
staff[1] = new Employee("Harry Hacker", 50000, 1989, 10, 1);
staff[2] = new Employee("Tony Tester", 40000, 1990, 3, 15);

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
public String getName()
   {
      return name;
   }
 
   public double getSalary()
   {
      return salary;
   }
 
   public Date getHireDay()
   {
      return hireDay;
   }
 
   public void raiseSalary(double byPercent)
   {
      double raise = salary * byPercent / 100;
      salary += raise;
   }
Это методы класса Employee, доступные после создания объекта этого класса в классе EmployeeTest...

Добавлено через 12 минут
Java
1
2
3
private String name;
   private double salary;
   private Date hireDay;
Добавлено через 3 минуты
В этих последних строках описываются переменные-члены (поля) класса... поле с именем name типа String, salary типа double, hireDay типа Date.

Добавлено через 4 минуты
Цитата Сообщение от Recreate Посмотреть сообщение
Последние 3 строчки это поля объекта Сотрудник. Доступ к ним осуществляется не напрямую, а через сеттеры и геттеры.
Коллега Recreate имел в виду методы соответствующего класса, которые выдают значения полей или присваивают им значения (от set, get...)
1
0 / 0 / 0
Регистрация: 16.10.2013
Сообщений: 20
06.11.2013, 09:13  [ТС]
Вот спасибо,я и не мечтал о столь развернутом ответе.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
06.11.2013, 09:13
Помогаю со студенческими работами здесь

С чего начать изучать основы java
Собственно хочу изучить основы java, но не знаю даже с чего начать. Знаю что есть много видов java, пк, телефоны, веб. И где искать, куда...

Основы проектирования передачи данных через сокеты
Всем привет. В общем, я задумал небольшой проектик и начал изучать java. Уже дошел до момента, когда надо придумать как правельно...

Книга по Java, не основы, а разные полезные либы и фреймворки
Была у меня в электронном виде книга, где описываются не основы языка и технологии, а разные полезные либы и фреймворки. Скинул на dvd, а...

Кей Хорстманн и Гари Корнелл Java 2, том 1, основы
Привет, кто читал данную книгу http://oz.by/books/more105910.html может быть помните, где вы качали архив примеров программ, в книге указан...

Часто ли используются на практике у Java программистов основы алгоритмизации и структуры данных и т.д.?
Мне интересно ваше мнение


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru