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

Основы ООП

05.11.2013, 20:33. Показов 1848. Ответов 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
Ответ Создать тему
Новые блоги и статьи
Оттенки серого
Argus19 18.03.2026
Оттенки серого Нашёл в интернете 3 прекрасных модуля: Модуль класса открытия диалога открытия/ сохранения файла на Win32 API; Модуль класса быстрого перекодирования цветного изображения в оттенки. . .
SDL3 для Desktop (MinGW): Рисуем цветные прямоугольники с помощью рисовальщика SDL3 на Си и C++
8Observer8 17.03.2026
Содержание блога Финальные проекты на Си и на C++: finish-rectangles-sdl3-c. zip finish-rectangles-sdl3-cpp. zip
Символические и жёсткие ссылки в Linux.
algri14 15.03.2026
Существует два типа ссылок — символические и жёсткие. Ссылка в Linux — это запись в каталоге, которая может указывать либо на inode «файла-ИСТОЧНИКА», тогда это будет «жёсткая ссылка» (hard link),. . .
[Owen Logic] Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора
ФедосеевПавел 14.03.2026
Поддержание уровня воды в резервуаре количеством включённых насосов: моделирование и выбор регулятора ВВЕДЕНИЕ Выполняя задание на управление насосной группой заполнения резервуара,. . .
делаю науч статью по влиянию грибов на сукцессию
anaschu 13.03.2026
прикрепляю статью
SDL3 для Desktop (MinGW): Создаём пустое окно с нуля для 2D-графики на SDL3, Си и C++
8Observer8 10.03.2026
Содержание блога Финальные проекты на Си и на C++: hello-sdl3-c. zip hello-sdl3-cpp. zip Результат:
Установка CMake и MinGW 13.1 для сборки С и C++ приложений из консоли и из Qt Creator в EXE
8Observer8 10.03.2026
Содержание блога MinGW - это коллекция инструментов для сборки приложений в EXE. CMake - это система сборки приложений. Здесь описаны базовые шаги для старта программирования с помощью CMake и. . .
Как дизайн сайта влияет на конверсию: 7 решений, которые реально повышают заявки
Neotwalker 08.03.2026
Многие до сих пор воспринимают дизайн сайта как “красивую оболочку”. На практике всё иначе: дизайн напрямую влияет на то, оставит человек заявку или уйдёт через несколько секунд. Даже если у вас. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru