Скачать презентацию Основы программирования на Java Занятие 5 Основы ООП Скачать презентацию Основы программирования на Java Занятие 5 Основы ООП

Основы_программирования_Java_04_2014_5_зан.ppt

  • Количество слайдов: 40

Основы программирования на Java Занятие 5. Основы ООП. Практика. Власенко Олег Федосович Основы программирования на Java Занятие 5. Основы ООП. Практика. Власенко Олег Федосович

Неформальное введение в ООП Неформальное введение в ООП

Что такое ООП? Что такое ООП?

Объект Кот Объект Кот

Какие свойства есть у кота? Какие свойства есть у кота?

Объект Кот Объект Кот

А методы? А методы?

Объект Кот Объект Кот

А что с другими животными? А что с другими животными?

Собака Собака

Сравнение свойств Кота и Собаки Сравнение свойств Кота и Собаки

Сравнение методов Кота и Собаки Сравнение методов Кота и Собаки

Домашние животные Домашние животные

Принцип наследования Принцип наследования

Схема наследования Схема наследования

Несколько терминов Несколько терминов

UML – диаграмма классов UML = Unified Modeling Language UML – диаграмма классов UML = Unified Modeling Language

источник вдохновения • http: //www. slideshare. net/smirik/ruby 11754239 источник вдохновения • http: //www. slideshare. net/smirik/ruby 11754239

Примеры с ООП Примеры с ООП

Пример 1 Создать базовый класс Vehicle описывающий поведение траспортного средства. Создать класс Auto расширяющий Пример 1 Создать базовый класс Vehicle описывающий поведение траспортного средства. Создать класс Auto расширяющий Vehicle методом honk() (гудеть). Vehicle должен содержать следующие методы: move. Forward(double speed) move. Back(double speed) turn. Left(double angle) turn. Right(double angle) Vehicle должен хранить информацию о направлении движения (0 – на восток, 90 – на север, 180 – на запад, 270 – на юг), реализации методов должны выводить сообщения в консоль «Еду в направлении X со скоростью Y» . В Auto должен быть метод honk() (гудеть) – который в консоль выводит сообщение «Бииип!» .

Пример 1 - реализация Класс-клиент: public class Lect 3 Main 1 { public static Пример 1 - реализация Класс-клиент: public class Lect 3 Main 1 { public static void main(String[] args) { Auto auto 1 = new Auto(0); auto 1. honk(); auto 1. move. Forward(20); auto 1. turn. Left(90); auto 1. turn. Left(180); auto 1. turn. Left(120); auto 1. turn. Right(30); auto 1. move. Back(10); auto 1. honk(); } }

Пример 1 - вывод Console: • • Бииип! Я еду в направлении 0. 0 Пример 1 - вывод Console: • • Бииип! Я еду в направлении 0. 0 со скоростью 20. 0 Я еду в направлении 90. 0 со скоростью 20. 0 Я еду в направлении 270. 0 со скоростью 20. 0 Я еду в направлении 30. 0 со скоростью 20. 0 Я еду в направлении 0. 0 со скоростью -10. 0 Бииип!

Пример 1 – класс Vehicle public class Vehicle { private double speed; private double Пример 1 – класс Vehicle public class Vehicle { private double speed; private double direction; public Vehicle(double init. Direction) { direction = init. Direction; speed = 0; } public void move. Forward(double speed) { this. speed = speed; print. Status(); } private void print. Status() { System. out. println("Я еду в направлении " + direction + " со скоростью " + speed); }

Пример 1 – класс Vehicle (ч 2) public void move. Back(double speed) { this. Пример 1 – класс Vehicle (ч 2) public void move. Back(double speed) { this. speed = -speed; print. Status(); } public void turn. Left(double angle) { direction = direction + angle; if (direction > 360) { direction = direction - 360; } print. Status(); } public void turn. Right(double angle) { direction = direction - angle; if (direction < 0) { direction = direction + 360; } print. Status(); } }

Пример 1 – класс Auto public class Auto extends Vehicle { public Auto(int direction) Пример 1 – класс Auto public class Auto extends Vehicle { public Auto(int direction) { super(direction); } public void honk() { System. out. println("Бииип!"); } }

UML – диаграмма классов UML = Unified Modeling Language UML – диаграмма классов UML = Unified Modeling Language

Пример 2 – перевод числа из 10 -й системы счисления в 2 -ую Пример: Пример 2 – перевод числа из 10 -й системы счисления в 2 -ую Пример: N = 12 N % 2 = 12 % 2 = 0 0 N = N / 2 = 12 / 2 = 6 N > 0 + N%2=6%2=0 0 N=N/2=6/2=3 N>0+ N%2=3%2=1 1 N=N/2=3/2=1 N>0+ N%2=1 1 N=N/2=1/2=0 N>0 - Полученные цифры нужно вывести в обратном порядке: 1100

Пример 2 – реализация через String. Builder public class Class 4 { public static Пример 2 – реализация через String. Builder public class Class 4 { public static void main(String[] args) { int num = 49; String. Builder str = new String. Builder(); do { int bin. Digit = num % 2; char bin. Char = bin. Digit == 0 ? '0' : '1'; str. append(bin. Char); num = num / 2; } while (num > 0); str. reverse(); System. out. println(str. to. String()); } }

Пример 2 – реализация через стек public class Class 4_1 { public static void Пример 2 – реализация через стек public class Class 4_1 { public static void main(String[] args) { int num = 129; Stack. Char stack = new Stack. Char(32); do { int bin. Digit = num % 2; char bin. Char = bin. Digit == 0 ? '0' : '1'; stack. push(bin. Char); num = num / 2; } while (num > 0); while (!stack. is. Empty()) { System. out. print(stack. pop()); } System. out. println(); } }

реализация стека public class Stack. Char { private char [] stack; private int top; реализация стека public class Stack. Char { private char [] stack; private int top; public Stack. Char(int size) { stack = new char[size]; top = 0; } public void push(char ch) { stack[top] = ch; top++; } … }

реализация стека (ч 2) public class Stack. Char { private char [] stack; private реализация стека (ч 2) public class Stack. Char { private char [] stack; private int top; … public char pop() { top--; return stack[top]; } public boolean is. Empty() { return top == 0; } }

Детали ООП в Java Детали ООП в Java

Модификаторы доступа private: члены класса доступны только внутри класса; «default» (package-private) (модификатор, по-умолчанию): члены Модификаторы доступа private: члены класса доступны только внутри класса; «default» (package-private) (модификатор, по-умолчанию): члены класса видны внутри пакета; protected: члены класса доступны внутри пакета и в наследниках; public: члены класс доступны всем;

Модификаторы доступа static - ссылка этого поля у любого экземпляра класса будет ссылаться на Модификаторы доступа static - ссылка этого поля у любого экземпляра класса будет ссылаться на одно и то же значение final – это модификатор, позволяющий объявлять константные поля в классе.

Элементы класса public class Sample { private int x; // переменная экземпляра класса private Элементы класса public class Sample { private int x; // переменная экземпляра класса private int y = 0; // переменная экземпляра класса public final int CURRENT_YEAR = 2012; // константа protected static int bonus; // переменная класса static String version = "Java SE 7"; // переменная класса protected Calendar now; public int method(int z) { return z++; } }

Примеры использования статических методов public class Class 3 { public static void main(String[] args) Примеры использования статических методов public class Class 3 { public static void main(String[] args) { double phi = Math. PI / 6; System. out. printf("sin(%f)=%fn", phi, Math. sin(phi)); phi = Math. PI / 4; System. out. printf("tan(%f)=%fn", phi, Math. tan(phi)); phi = Math. PI / 2; System. out. printf("tan(%f)=%fn", phi, Math. tan(phi)); System. out. printf("sin(%f)=%fn", phi, Math. sin(phi)); System. out. printf("cos(%f)=%fn", phi, Math. cos(phi)); } }

Задача 1 Создать класс Star, в котором хранятся координаты звезды, есть методы to. Left(), Задача 1 Создать класс Star, в котором хранятся координаты звезды, есть методы to. Left(), to. Right(), paint(Graphics g) - который отрисовывает звезду, например такую: Используйте класс Star, управляя положением фигуры на панели – кнопки для перемещение влево, вправо.

Задача 2 Добавьте на форму кнопки «Вверх» и «Вниз» , а в класс Star Задача 2 Добавьте на форму кнопки «Вверх» и «Вниз» , а в класс Star соответствующие методы, чтобы изменять местоположение фигуры.

Домашнее задание 5 Создать класс определенной фигуры (дом, машина, самолет или что-то другое). Используя Домашнее задание 5 Создать класс определенной фигуры (дом, машина, самолет или что-то другое). Используя пример с занятия 5 сделать форму на которой расположить панель с фигурой. Также на форме нужно расположить управление фигурой – кнопки для перемещения вверх, вниз, влево, вправо.

Спасибо за внимание! Власенко Олег Федосович E-mail: vlasenko. oleg@gmail. com Vk: vk. com/oleg. f. Спасибо за внимание! Власенко Олег Федосович E-mail: vlasenko. oleg@gmail. com Vk: vk. com/oleg. f. vlasenko Телефон: 8 902 246 05 47