- •Н. В. Зорина Объектно-ориентированное программирование на Java
- •Зорина н.В.
- •Введение в разработку программ на языке программирования java
- •Установка по
- •Начало работы с программой
- •Классы, как новые типы данных. Поля данных и методы
- •Определениекласса.
- •Конвенция кода для класса (Class Naming Convention).
- •Создание экземпляровкласса
- •Операция получения доступа к компонентамкласса.
- •Переменные - поля данныхкласса
- •Методыкласса
- •Теперь соберем все вместе: ПримерОоп
- •Конструкторы
- •Перегрузкаметодов
- •Модификаторы контроля доступа- public илиprivate.
- •Информация по сокрытию реализации иинкапсуляции.
- •Код программы:
- •Практическая работа №2. Использование uml диаграмм в объектно- ориентированном программировании
- •Теоретические сведения:
- •Упражнение 1.
- •Упражнение 2.
- •Пример выполнения задания.
- •Практическая работа №3. Наследование. Абстрактные суперклассы и их подклассы в java.
- •Теоретические сведения
- •Задания.
- •Упражнение 2.
- •Упражнение 3.
- •Упражнение 4.
- •Упражнение 5.
- •Пример решения задания 1.
- •Практическая работа №4. Создание gui. Событийное программирование в java.
- •Теоретические сведения
- •Важная замечание
- •Замечание.
- •Менеджеры компоновки компонентов или Layout Менеджеры. Менеджер BorderLayout:
- •Менеджер GridLayout.
- •Менеджер Null Layout Manager.
- •Слушатель событий мыши MouseListener.
- •Создание меню.
- •Упражнение1.
- •Практическая работа №5. Программирование рекурсии в java
- •Теоретические сведения
- •Задания.
- •Пример решения задачи.
- •Практическая работа №6. Техники сортировки в java
- •Теоретические сведения
- •Алгоритм сортировки вставками.
- •Алгоритм быстрой сортировки (Quick Sort).
- •Алгоритм сортировка слиянием (Merge Sort).
- •Использование полиморфизма в сортировке.
- •Упражнение 1.
- •Упражнение 2.
- •Упражнение 3.
- •Практическая работа №7. Использование стандартных контейнерных классов при программировании на java
- •Теоретические сведения
- •Задания.
- •Приложение Горячие клавиши Intellij idea (hot keys)
- •Редактирование
- •Поиск /замена
- •Поиск Использованиякода
- •Компиляция ивыполнение
- •Отладка
- •Навигация
- •Рефакторинг
- •Интерактивныешаблоны
- •Объектно-ориентированное программирование на Java
Создание меню.
Добавление меню в программе Java проста. Java определяет трикомпонента дляобработки:
JMenuBar: который представляетсобойкомпонент, которыйсодержит меню.
JMenu:который представляетменюэлементовдлявыбора.
JMenuItem: представляетсобойэлемент, которыйможнокликнутьизменю.
Рисунок 4.7
Подобно компоненту Button (на самом деле MenuItems являются подклассами класса AbstractButton). Мы можем добавить ActionListener к ним так же, как мы делали с кнопками
Упражнение1.
ЗАДАНИЯ.
Напишитеинтерактивную программусиспользованиемGUIимитирует таблицу результатовматчей между командами МиланиМадрид.Создайте JFrame приложениеукоторогоестьследующие компоненты GUI:
одна кнопка JButtonlabeled“ACMilan”
другая JButtonподписана“RealMadrid”
надписьJLabelсодержиттекст“Result:0X0”
надписьJLabel содержит текст “LastScorer:N/A”
надписьLabel содержит текст“Winner:DRAW”;
Всякий раз, когдапользователь нажимаетнакнопкуACMilan,результатбудетувеличиватьсядляМилана,сначала1X0,затем2X0итакдалее.LastScorerозначает последнюю забившую команду.Вэтомслучае:ACMilan. Еслипользователь нажимаеткнопкудлякомандыМадрид,тосчетприписывается ей. Победителем становится команда, котораяимеет больше кликов кнопкуна соответствующую,чемдругая.
Практическая работа №5. Программирование рекурсии в java
Цель работы:разработка и программирование рекурсивных алгоритмов на языке Java.
Теоретические сведения
В контексте языка программирования рекурсия — это некий активный метод (или подпрограмма) вызываемый сам по себе непосредственно, или вызываемой другим методом (или подпрограммой) косвенно. В первую очередь надо понимать, что рекурсия — это своего рода перебор. Вообще говоря, всё то, что решается итеративно можно решить рекурсивно, то есть с использованием рекурсивной функции.
Так же, как и у перебора (цикла) у рекурсии должно быть условие остановки — базовый случай (иначе также, как и цикл, рекурсия будет работать вечно—infinite).Этоусловиеиявляетсятемслучаем,ккоторомурекурсияидет (шаг рекурсии). При каждом шаге вызывается рекурсивная функция до тех пор, пока при следующем вызове не сработает базовое условие и не произойдет остановка рекурсии (а точнее возврат к последнему вызову функции). Всё решение сводится к поиску решения для базового случая. В случае, когда рекурсивная функция вызывается для решения сложной задачи (не базового случая) выполняется некоторое количество рекурсивных вызовов или шагов, с целью сведения задачи к более простой. И так до тех пор, пока не получим базовоерешение.
Итак, рекурсивная функция состоит из:
условие остановки или жебазового случаяилиусловия;
условие продолжения илишага рекурсии— способ сведения сложной задачи к более простымподзадачам.
Рассмотрим это на примере нахождения факториала:
public class Solution {
public static int recursion(int n) {
// условиевыхода
// Базовыйслучай
// когда остановиться повторять рекурсию?if (n == 1){
return1;
}
// Шаг рекурсии / рекурсивное условие
return recursion(n - 1) * n;
}
public static void main(String[] args) { System.out.println(recursion(5)); // вызов рекурсивной функции
}
}
Тутбазовымусловиемявляетсяусловиекогдаn=1.Таккакмызнаемчто
1!=1 и для вычисления 1! нам ни чего не нужно. Чтобы вычислить 2! мыможем
использовать 1!, т.е. 2!=1!*2. Чтобы вычислить 3! нам нужно 2!*3… Чтобы вычислить n! нам нужно (n-1)!*n. Это и является шагом рекурсии.
Иными словами, чтобы получить значение факториала от числа n, достаточно умножить на n значение факториала от предыдущего числа.
В сети интернет при объяснении понятия рекурсии часто даются примеры решения задач нахождения чисел Фибоначчи и Ханойская башня
Представлены задачи с различным уровнем сложности. Попробуйте их решить, самостоятельно используя подход, описанный выше.
При решении попробуйте думать рекурсивно и ответить на вопросы:
какой базовый случай или условие задается взадаче?
какой шаг рекурсии или рекурсивноеусловие?