Слайд 16UML – диаграмма классов
UML = Unified Modeling Language
Слайд 17источник вдохновения
http://www.slideshare.net/smirik/ruby-11754239
Слайд 19Пример 1
Создать базовый класс Vehicle описывающий поведение траспортного средства. Создать
класс Auto расширяющий Vehicle методом honk() (гудеть).
Vehicle должен содержать следующие
методы:
moveForward(double speed)
moveBack(double speed)
turnLeft(double angle)
turnRight(double angle)
Vehicle должен хранить информацию о направлении движения (0 – на восток, 90 – на север, 180 – на запад, 270 – на юг), реализации методов должны выводить сообщения в консоль «Еду в направлении X со скоростью Y».
В Auto должен быть метод honk() (гудеть) – который в консоль выводит сообщение «Бииип!».
Слайд 20Пример 1 - реализация
Класс-клиент:
public class Lect3Main1 {
public static void main(String[]
args) {
Auto auto1 = new Auto(0);
auto1.honk();
auto1.moveForward(20);
auto1.turnLeft(90);
auto1.turnLeft(180);
auto1.turnLeft(120);
auto1.turnRight(30);
auto1.moveBack(10);
auto1.honk();
}
}
Слайд 21Пример 1 - вывод
Console:
Бииип!
Я еду в направлении 0.0 со скоростью
20.0
Я еду в направлении 90.0 со скоростью 20.0
Я еду в
направлении 270.0 со скоростью 20.0
Я еду в направлении 30.0 со скоростью 20.0
Я еду в направлении 0.0 со скоростью 20.0
Я еду в направлении 0.0 со скоростью -10.0
Бииип!
Слайд 22Пример 1 – класс Vehicle
public class Vehicle {
private double
speed;
private double direction;
public Vehicle(double initDirection) {
direction = initDirection;
speed = 0;
}
public
void moveForward(double speed) {
this.speed = speed;
printStatus();
}
private void printStatus() {
System.out.println("Я еду в направлении " + direction
+ " со скоростью " + speed);
}
Слайд 23Пример 1 – класс Vehicle (ч 2)
public void moveBack(double
speed) {
this.speed = -speed;
printStatus();
}
public void turnLeft(double angle) {
direction = direction
+ angle;
if (direction > 360) {
direction = direction - 360;
}
printStatus();
}
public void turnRight(double angle) {
direction = direction - angle;
if (direction < 0) {
direction = direction + 360;
}
printStatus();
}
}
Слайд 24Пример 1 – класс Auto
public class Auto extends Vehicle {
public
Auto(int direction) {
super(direction);
}
public void honk() {
System.out.println("Бииип!");
}
}
Слайд 25UML – диаграмма классов
UML = Unified Modeling Language
Слайд 26Пример 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 % 2 = 1 1 N = N / 2 = 1 / 2 = 0 N > 0 -
Полученные цифры нужно вывести в обратном порядке:
1100
Слайд 27Пример 2 – реализация через StringBuilder
public class Class4 {
public static
void main(String[] args) {
int num = 49;
StringBuilder str = new
StringBuilder();
do {
int binDigit = num % 2;
char binChar = binDigit == 0 ? '0' : '1';
str.append(binChar);
num = num / 2;
} while (num > 0);
str.reverse();
System.out.println(str.toString());
}
}
Слайд 28Пример 2 – реализация через стек
public class Class4_1 {
public static
void main(String[] args) {
int num = 129;
StackChar stack = new
StackChar(32);
do {
int binDigit = num % 2;
char binChar = binDigit == 0 ? '0' : '1';
stack.push(binChar);
num = num / 2;
} while (num > 0);
while (!stack.isEmpty()) {
System.out.print(stack.pop());
}
System.out.println();
}
}
Слайд 29реализация стека
public class StackChar {
private char [] stack;
private int top;
public
StackChar(int size) {
stack = new char[size];
top = 0;
}
public void push(char
ch) {
stack[top] = ch;
top++;
}
…
}
Слайд 30реализация стека (ч 2)
public class StackChar {
private char [] stack;
private
int top;
…
public char pop() {
top--;
return stack[top];
}
public boolean isEmpty() {
return top
== 0;
}
}
Слайд 32Модификаторы доступа
private: члены класса доступны только внутри класса;
«default» (package-private) (модификатор,
по-умолчанию): члены класса видны внутри пакета;
protected: члены класса доступны внутри
пакета и в наследниках;
public: члены класс доступны всем;
Слайд 33Модификаторы доступа
static - ссылка этого поля у любого экземпляра класса
будет ссылаться на одно и то же значение
final – это
модификатор, позволяющий объявлять константные поля в классе.
Слайд 34Элементы класса
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++;
}
}
Слайд 35Примеры использования статических методов
public class Class3 {
public static void main(String[]
args) {
double phi = Math.PI / 6;
System.out.printf("sin(%f)=%f\n", phi, Math.sin(phi));
phi =
Math.PI / 4;
System.out.printf("tan(%f)=%f\n", phi, Math.tan(phi));
phi = Math.PI / 2;
System.out.printf("tan(%f)=%f\n", phi, Math.tan(phi));
System.out.printf("sin(%f)=%f\n", phi, Math.sin(phi));
System.out.printf("cos(%f)=%f\n", phi, Math.cos(phi));
}
}
Слайд 36Домашнее задание
Создать класс определенной фигуры (дом, машина, самолет или
что-то другое). Также создать методы управление фигурой – перемещения вверх,
вниз, влево, вправо.