
- •Классификация современных мп.
- •Организация мп систем
- •Організація однокристального мікроконтролера мсs-51. Типи пам'яті. Карта пам'яті. Режими адресації. Особливості системи команд: команди пересилання.
- •Команды пересылки данных.
- •Регістрова структура мікроконтролера мс5-51. Особливості системи команд: арифметичні команди, логічні команди, бітові операції, команди передачі керування.
- •Блок регистров специальных функций(sfr)
- •Однокристальний мікро контролер mcs-51: порти вводу-виводу, система переривань. Службові регістри переривань, процедура обробки переривань.
- •Регистр приоритетов прерываний (ip)
- •Однокристальний мікро контролер mcs-51: система таймерів-лічильників. Структура таймерів-лічильників. Службові регістри. Режими роботи. Приклад обробки переривань від таймера 0.
- •2.7 Платформа java. Створення та виконання програм. Принципи об’єктно-орієнтованого підходу. Інкапсуляція. Композиція. Наслідування. Поліморфізм.
- •Платформа java. Типи даних. Організація пам’яті. Структура класів. Статичні елементи. Конструктори. Абстрактні класи та інтерфейси. Внутрішні класи. Все является объектом
- •Примитивные типы (примитивы)
- •Создание новых типов данных
- •Поля и методы
- •Методы, аргументы и возвращаемые значения
- •Ключевое слово static
- •Статические методы
- •Конструктор гарантирует инициализацию
- •Класс Class
- •Абстрактные классы и методы
- •Интерфейсы
- •Внутренние классы Вложенные классы (Inner)
- •Классы, вложенные в методы (локальные внутренние классы)
- •Анонимные внутренние классы
- •Статические внутренние классы (nested)
- •Компоненты и контейнеры
- •Диспетчеры компоновки
- •Обработка событий
- •Платформа java: потоки вводу-виводу, Класифікація потоків. Класи-фільтри. Байтові та текствові потоки. Потоки ввода/вывода и файлы
- •Классификация классов ввода-вывода
- •Потоки фильтров
- •Текстовые потоки
Создание новых типов данных
Описание нового типа (класса) ( или определение)
class ATypeName { / *тело класса/*}
Теперь можно создать объект этого типа – объявление и создание объекта а
ATypeName a = new ATypeName ();
Поля и методы
Класс содержит следующие элементы (member – члены класса):
- поля (переменные) – (fields);
- методы (функции)- (methods).
Полем может быть:
- ссылка на объект;
- примитив.
Для каждого объекта отдельно от других объектов в своем блоке памяти хранятся поля.
Для каждого класса создается общий блок памяти один на все объекты этого класса для хранения методов и статических переменных.
Методы, аргументы и возвращаемые значения
Вызов метода – сообщение, принимаемое объектом. Синтаксис:
Возвращаемый тип имя Метода (список аргументов) -это сигнатура метода
{
// тело метода
}
Методы могут быть только частями класса. Вне классов (как в С++) методов быть не может.
Метод вызывается для объекта:
имя Объекта . имя Метода (арг1, арг2…)
Например:
int x = a.f(5); // посылка сообщения объекту а
В списке аргументов: типы предаваемых объектов и их имена (ссылки). Внутри класса -определение метода.
Ключевое слово static
Применяется:
когда нужно иметь данные, общие для всех объектов класса
методы, не привязанные к объекту класса, их можно вызывать не создавая объекты.
Статический метод или данные можно вызвать, не создавая объекты класса (нестатические можно вызвать только для объекта!)
class StaticTest {
static int i=47;
}
……………………………………..
StaticTest st1 = new StaticTest ();
StaticTeat st2 = new StaticTest ();
st1.i // i содержит 47 (один блок памяти на все объекты)
st2.i //i содержит 47 (один блок памяти на все объекты)
…………………………………..
Обращение по имени класса:
StaticTest.i++;
st1.i - теперь 48
st2.i - теперь 48
Статические методы
ИмяКласса.Метод();
class Incrementable
{
static void increment ()
{
StaticTest.i++;
}
}
Теперь его можно вызвать:
Incrementable.increment ();
или можно вызвать как обычно, через ссылку на объект
Incrementable sf = new Incrementable ();
sf.increment ();
Некоторые библиотечные классы Math, Arrays, Collections – содержат только статические методы.
Конструктор гарантирует инициализацию
Конструктор – метод, который вызывается при создании нового объекта. Автоматически вызывается при создании нового объекта. Имя совпадает с именем класса, он не возвращает ничего! Ссылку возвращает оператор new.
Пример
class Rock {
Rock () {
System.out.println (“Rock ”);
}
}
Протестируем класс:
public class RockTest {
public static void main (String[] args) {
for (int i=0; i<10; i++)
new Rock (); //безымянный объект
}
}
Будет 10 раз напечатано ”Rock ”
Конструктор может иметь аргументы
Rock (int i) {
System.out.print( “Rock ” + i + ” “ );
}
Конструктор по умолчанию
Это конструктор без аргументов.
Если конструкторов в классе не объявили, то конструктор по умолчанию будет создан компилятором.
class Bird {}
…
Bird b = new Bird ();
Если есть хотя бы один конструктор, то компилятор конструктор по умолчанию не создает!
Конструктор копии
(копирующий конструктор)
Создает новый объект – копию параметра.
class Box {
double width;
double height;
double depth;
Box (Box ob) { // конструктор копии
width = ob.width
height = ob.height
depth = ob.depth
}
Box () { // конструтор по умолчанию
width = 1.0;
height = 1.0;
depth = 1.0;
}
}
Box myBox1 = new Box();
Инициализация членов класса
Локальные переменные не инициализируются по умолчанию.
Примитивные типы –инициализируются нулями.
Ссылочные значения поля класса инициализируются – null.
Инициализировать поля можно:
явно
инициализация конструктором
Особенности конструктора
Конструктор имеется в любом классе. Если он не описан, компилятор сам создаст default constructor (он не делает ничего, кроме вызова конструктора суперкласса- super() ). Если есть хоть 1 конструктор – default-конструктор компилятор не сделает.
Конструктор выполняется автоматически при создании экземпляра класса, после выделения памяти и инициализации полей.
Конструктор не возвращает значения. Может иметь модификаторы: -public, -private, -protected или не иметь (пакетный доступ).
Конструктор (фактически – статический метод). Но методом не считается, его нельзя наследовать или переопределить, но можно перегрузить.
Тело конструктора может начинаться с:
super(…) - вызов конструктора суперкласса;
this (…) - вызов другого конструктора.
Если super (…) - нет, то вначале все равно выполняется super(); по умолчанию (хотя бы для Object). То есть если класс будет базовым, желательно написать для него конструктор по умолчанию.
Можно писать new Dog().voice();(приоритет у new выше,чем у .)