Ракета. Лабораторная работа 1
Скачать 49.85 Kb.
|
Лабораторная работа 1Темы: Основы программирования на Java. Обработка событий. Механизм делегирования событий. Практические заданияПознакомиться с особенностями технологии Java и изучить синтаксис языка Java. Изучить основные понятия и термины обработки событий в модели делегирования событий на Java. Разобрать приведенные примеры FontsList, LinesDraw, KeyCodes, Timer, DrawFig (см. методичку). Разработать программу. Основная задача – разработка упрощенной имитации поведения объектов (все последующие лабораторные работы будут расширять это задание). Объекты реализуются через наследование: абстрактный класс + интерфейс → наследники. Рабочий цикл программы: запускается процесс симуляции по клавише, генерируются объекты классов согласно заданию; симуляция завершается по другой клавише, выводится статистическая информация. Для решения задачи: Разработать абстрактный класс объекта, согласно варианту индивидуального задания. Создать интерфейс IBehaviour, задающий поведение объекта (далее будут реализоваться алгоритмы движения объектов в окне программы). Реализовать иерархию классов, определяющих объекты по варианту и реализующие интерфейс IBehaviour. Создать класс Habitat (среда), определяющий размер рабочей области и хранящий массив объектов, с параметрами заданными вариантом. Предусмотреть в классе метод Update, вызывающийся по таймеру и получающий на вход время, прошедшее от начала симуляции. В данном методе должны генерироваться новые объекты и помещаться в поле визуализации в случайном месте. Визуализация объекта – схематично, плюсом будет, если объект будет похож на оригинал (можно использовать готовые небольшие картинки); Рабочее окно программы – область визуализации среды обитания объектов; Симуляция должна запускаться по клавише B и останавливаться по клавише E. При остановке симуляции список уничтожается. Время симуляции должно отображаться текстом в области визуализации и скрываться/показываться по клавише T; По завершению симуляции в поле визуализации должна выводиться информация о количестве и типе сгенерированных объектов, а также время симуляции. Текст должен быть форматирован, т.е. выводиться с использованием разных шрифтов и цветов. Параметры симуляции задаются в классе Habitat. Вариант 1 Объект – муравей. Бывают 2 видов: рабочий и воин. Рабочие рождаются каждые N1 секунд с вероятностью P1. Воины рождаются каждые N2 секунд с вероятностью P2. Вариант 2 Объект – пчела. Бывают 2 видов: трутень и рабочий. Трутни рождаются каждые N1 секунд, если их количество менее K% от общего числа пчел, в противном случае – не рождаются вовсе. Рабочие рождаются каждые N2 секунд с вероятностью P. Вариант 3 Объект – аквариумная рыбка. Бывают 2 видов: золотая и гуппи. Золотые рыбки рождаются каждые N1 секунд с вероятностью P1. Гуппи рождаются каждые N2 секунд с вероятностью P2. Вариант 4 Объект – кролик. Бывают 2 видов: обыкновенный и альбинос. Обыкновенные кролики рождаются каждые N1 секунд с вероятностью P1. Альбиносы рождаются каждые N2 секунд, при условии, что их количество менее K% от общего числа кроликов, в противном случае – не рождаются вовсе. Вариант 5 Список объектов продажи на автомобильном рынке состоит из 2-х видов машин: грузовые и легковые. Грузовые машины генерируются каждые N1 секунд с вероятностью P1. Легковые генерируются каждые N2 секунд с вероятностью P2. Вариант 6 Рабочий коллектив компании состоит из разработчиков и менеджеров. Разработчики генерируются каждые N1 секунд с вероятностью P1. Менеджеры генерируются каждые N2 секунд при условии, что их количество менее K% от общего числа разработчиков, в противном случае – не генерируются. Вариант 7 Список жилых домов города состоит из двух типов: капитальный, деревянный. Капитальные дома генерируются каждые N1 секунд с вероятностью P1. Деревянные дома генерируются каждые N2 секунд с вероятностью P2. Вариант 8 Список транспортных средств на дороге состоит из двух категорий: автомобили и мотоциклы. Автомобили генерируются каждые N1 секунд с вероятностью P1. Мотоциклы генерируются каждые N2 секунд с вероятностью P2. Вариант 9 Объект обучающийся. Бывает 2 видов: студент (муж. пола) и студентка (жен. пола). Студенты генерируются каждые N1 секунд с вероятностью P1. Студентки генерируются каждые N2 секунд с вероятностью P2. Вариант 10 Картотека налоговой инспекции состоит из записей двух типов: физические и юридические лица. Физические лица генерируются каждые N1 секунд с вероятностью P1. Юридические лица генерируются каждые N2 секунд с вероятностью P2. Вариант 11 Объекты – домашние животные. Бывают 2 видов: кошки и собаки. Кошки генерируются каждые N1 секунд с вероятностью P1. Собаки генерируются каждые N2 секунд с вероятностью P2. Вариант 12 Объекты – птицы. Бывают 2 видов: птенцы и взрослые птицы. Взрослые птицы генерируются каждые N1 секунд с вероятностью P1. Птенцы генерируются каждые N2 секунд при условии, что их количество менее K% от общего числа взрослых птиц, в противном случае – не генерируются. Вопросы для подготовки к защите Что такое первичный класс приложения? Какой обязательный метод он должен содержать? Какие существуют виды переменных Java, чем они отличаются друг от друга? Какие примитивные типы определены в Java? Что делает конструктор класса? Должен ли он обязательно явно присутствовать в объявлении класса? Какие существуют виды ссылочных типов? Как реализуются ссылочные переменные? Что такое типы, определенные пользователем? В чем особенности строковых переменных? Чем массивы Java отличаются от массивов других языков, их преимущества? Как переменные различных видов передаются в качестве параметров методам? Что такое элементы класса и элементы экземпляра класса, чем они отличаются друг от друга? Как нужно указывать, что переменная или метод является элементом класса, а не экземпляра? Для чего используются модификаторы доступа? Какие существуют модификаторы доступа, как они ограничивают доступ к элементам? Что позволяет делать процесс наследования? Что такое суперкласс и подкласс? Что такое повторное использование кода? Какие заранее определенные переменные содержит каждый класс Java? Что можно сделать при помощи переменной this? Что можно сделать при помощи переменной super? Что такое скрытие переменной, затемнение переменной и замещение метода? Как импортировать классы из пакетов? Как добавить класс в пакет? Как ускорить вывод графических изображений, загружаемых из файла и устранить мерцание при выводе изображений? Объект какого типа выполняет все графические операции? Почему рекомендуется использовать ограниченный набор цветов? Почему рекомендуется использовать ограниченный набор шрифтов? Как получить список всех доступных шрифтов? Что такое событие? Когда возникают события? Что такое объект слушателя? Какие существуют способы создания слушателя события? Какие методы отвечают за обработку простых событий от мыши? Какие методы отвечают за обработку простых событий от клавиатуры? Что такое модель делегирования событий? Как подключиться к прослушиванию события? Что такое вложенные классы? Что такое анонимные классы? Лабораторная работа 2Темы: Разработка графического интерфейса приложения. Практические заданияПознакомиться с основными графическими библиотеками Java - AWT и Swing и их основными компонентами. Изучить классы менеджеров компоновки, классы создания меню приложения, основных и диалоговых окон и т.д. Для хранения генерируемых объектов использовать динамический массив объектов. Для обеспечения доступа всем элементам приложения и создания только одного экземпляра массива объектов используйте структурный паттерн Singleton. Доработать программу, созданную в лабораторной работе № 1: поделить рабочую область окна приложения на 2 части. Визуализация переносится в одну часть окна, панель управления в другую; добавить кнопки «Старт» и «Стоп» в панель управления. Они должны запускать и останавливать симуляцию соответственно. Если симуляция остановлена, то кнопка «Стоп» должна блокироваться. Если симуляция идет, то блокируется кнопка «Старт». Клавиши B и E должны функционировать по-прежнему; добавить переключатель «Показывать информацию», который разрешает отображение модального диалога из 7 пункта задания; добавить группу из 2 исключающих переключателей: «Показывать время симуляции» и «Скрывать время симуляции». Клавиша T должна функционировать по-прежнему; используя различные менеджеры компоновки, реализовать интерфейс пользователя согласно индивидуальному заданию; добавить в программу главное в меню и панель инструментов, в которых продублировать основные команды вашего интерфейса пользователя; при остановке симуляции должно появляться модальное диалоговое окно (при условии, что оно разрешено) с информацией о количестве и типе сгенерированных объектов, а также времени симуляции. Вся информация выводится в элементе TextArea, недоступном для редактирования. В диалоговом окне должно быть 2 кнопки: «ОК» и «Отмена». При нажатии на «ОК» симуляции останавливается, а при нажатии на «Отмена», соответственно продолжается; предусмотреть проверку данных вводимых пользователем. При вводе неверного значения обрабатывать исключительную ситуацию: выставлять значение по умолчанию и выводить диалоговое окно с сообщением об ошибке; Реализовать следующие элементы управления: Периоды рождения объектов – текстовые поля; Для задания вероятностей рождения объектов комбобокс и список (шаг значений 10%); Дополнить интерфейс поясняющими метками. Вопросы для подготовки к защите Что такое GUI? Какие графические библиотеки есть в Java? Какой принцип работы компонентов AWT? Недостатки библиотеки. Какой принцип работы компонентов Swing? Что такое элементы управления и что такое контейнеры? Какие классы элементов управления существуют? Что необходимо сделать, чтобы добавить компонент в контейнер? Как можно перехватить и обработать события, пришедшие от компонентов? Какие типы переключателей существуют? Как несколько переключателей объединить в группу? Чем отличаются выпадающие и невыпадающие списки? Как осуществляется в них выбор элементов? Что такое текстовые поля и текстовые области? Чем они отличаются? Что такое контейнеры? Какие основные виды контейнеров существует? Для чего чаще всего используются панели? В чем основное отличие окон и панелей? Что является обязательным параметром конструктора при создании экземпляра класса окон? Каковы отличительные особенности имеют фреймы? Как добавить меню в контейнер? Как реализуется вложенное меню? Как создать новое меню и добавить в него элементы? Какими методами обрабатываются события меню? Для чего в основном используются окна диалогов? Каковы важные отличия окон диалогов от фреймов? Объект какого класса должен обязательно быть родителем диалогового окна? Что такое модальное окно? Как создать диалог своего класса? Для чего предназначены менеджеры компоновки? Какие существуют режимы размещения? Лабораторная работа 3Темы: Классы-коллекции. Практические заданияИзучить особенности реализации классов-коллекций в Java. Доработать программу, созданную в лабораторной работе № 2: добавить генерируемым объектам понятия «время рождения» и «время жизни». Время рождения устанавливается в момент генерации объекта, и по значению соответствует времени, прошедшему от начала симуляции. Время жизни – время, через которое объект должен исчезнуть, считая от времени рождения; вынести установку параметров времени жизни объектов в пользовательский интерфейс. Для каждого типа объекта должно задаваться собственное время. Рекомендуется использовать текстовые поля, но следуют помнить о проверке на ввод некорректных данных; добавить генерируемым объектам уникальные целочисленные идентификаторы (случайные числа), которые назначаются при генерации объекта. Для хранения сгенерированных идентификаторов используйте коллекцию удобную для поиска по варианту; использовать коллекции по варианту. При генерации объекта происходит добавление его в коллекцию (в класс добавить поле идентификатора), а во вторую коллекцию: идентификаторы существующих объектов, в третью идентификатор ̶ время рождения. При возникновении события по таймеру обойдите коллекцию и удалите все объекты, время жизни которых истекло, а также все данные во вспомогательных коллекциях. добавьте в панель управления кпопку «Текущие объекты». По нажатию на эту кнопку появляется модальное диалоговое окно, содержащее список всех «живых» объектов на момент нажатия со временем их рождения (время рождения – ключ). В класс диалогового окна должна передаваться коллекция с хранением объектов по времени рождения. Типы коллекций задаются вариантом. Вариант 1 Коллекция для хранения объектов: Vector Коллекция для хранения и поиска уникальных идентификаторов: HashSet Коллекция для хранения времени рождения объектов: TreeMap Вариант 2 Коллекция для хранения объектов: ArrayList Коллекция для хранения и поиска уникальных идентификаторов: HashSet Коллекция для хранения времени рождения объектов: TreeMap Вариант 3 Коллекция для хранения объектов: LinkedList Коллекция для хранения и поиска уникальных идентификаторов: HashSet Коллекция для хранения времени рождения объектов: TreeMap Вариант 4 Коллекция для хранения объектов: Vector Коллекция для хранения и поиска уникальных идентификаторов: TreeSet Коллекция для хранения времени рождения объектов: HashMap Вариант 5 Коллекция для хранения объектов: ArrayList Коллекция для хранения и поиска уникальных идентификаторов: TreeSet Коллекция для хранения времени рождения объектов: HashMap Вариант 6 Коллекция для хранения объектов: LinkedList Коллекция для хранения и поиска уникальных идентификаторов: TreeSet Коллекция для хранения времени рождения объектов: HashMap Вариант 7 Коллекция для хранения объектов: Vector Коллекция для хранения и поиска уникальных идентификаторов: HashSet Коллекция для хранения времени рождения объектов: TreeMap Вариант 8 Коллекция для хранения объектов: ArrayList Коллекция для хранения и поиска уникальных идентификаторов: HashSet Коллекция для хранения времени рождения объектов: TreeMap Вариант 9 Коллекция для хранения объектов: LinkedList Коллекция для хранения и поиска уникальных идентификаторов: HashSet Коллекция для хранения времени рождения объектов: TreeMap Вариант 10 Коллекция для хранения объектов: Vector Коллекция для хранения и поиска уникальных идентификаторов: TreeSet Коллекция для хранения времени рождения объектов: HashMap Вариант 11 Коллекция для хранения объектов: ArrayList Коллекция для хранения и поиска уникальных идентификаторов: TreeSet Коллекция для хранения времени рождения объектов: HashMap Вариант 12 Коллекция для хранения объектов: LinkedList Коллекция для хранения и поиска уникальных идентификаторов: TreeSet Коллекция для хранения времени рождения объектов: HashMap Вопросы для подготовки к защите Для чего используются классы-коллекции? Что такое класс Vector? Для чего он используется? Каковы его достоинства и недостатки? Какая структура данных используется в классе Vector? Назовите особенности организации класса Stack. Для чего применяется класс Hashtable? Какая структура данных используется в классе Hashtable? Что такое коэффициент загруженности? Что такое емкость класса-коллекции? Назначение и особенности применения класса Properties. Расскажите об иерархии интерфейсов коллекций Java. Объясните назначение каждого интерфейса. Каково назначение интерфейса Collection? Опишите возможности применения интерфейсов Map, Set и List. Для чего применяются интерфейсы Iterator и ListIterator? Опишите классы ArrayList и LinkedList. Опишите классы HashSet, TreeSet. Опишите классы HashMap, TreeMap. Какие структуры данных используются в этих классах? Какие алгоритмы для обработки коллекций существуют в Java и как их использовать? Лабораторная работа 4Темы: Многопотоковые приложения. Практические заданияИзучить особенности реализации и работы потоков в Java, управлением приоритетами потоков и синхронизацией потоков. Доработать программу, созданную в лабораторной работу № 3: создать абстрактный класс BaseAI, описывающий «интеллектуальное поведение» объектов. Класс должен создавать поток, обеспечивающий движения объектов коллекции; реализовать класс BaseAI для каждого из видов объекта, включив в него поведение, описанное в индивидуальном задании по варианту; синхронизовать работу потоков расчета интеллекта объектов, их рисования и генерации новых объектов. Рисование должно остаться в основном потоке; добавить в панель управления кнопки для остановки и возобновления работы интеллекта каждого вида объектов. Реализовать через засыпание/пробуждение потоков (методы wait() и notify()); добавить в панель управления выпадающие списки для выставления приоритетов каждого из потоков. Вариант 1 Муравьи-рабочие двигаются в один из углов области их обитания (например, [0;0]) по прямой со скоростью V, а затем возвращаться обратно в точку своего рождения с той же скоростью. Муравьи-воины двигаются по окружности с радиусом R со скоростью V. Вариант 2 Пчелы-рабочие двигаются в один из углов области их обитания (например, [0;0]) по прямой со скоростью V, а затем возвращаться обратно в точку своего рождения с той же скоростью. Трутни двигаются хаотично со скоростью V. Хаотичность достигается случайной сменой направления движения раз в N секунд. Вариант 3 Золотые рыбки двигаются по оси X от одного края области обитания до другого со скоростью V. Гуппи двигаются по оси Y от одного края области обитания до другого со скоростью V. Вариант 4 Обыкновенные кролики двигаются хаотично со скоростью V. Хаотичность достигается случайной сменой направления движения раз в N секунд. Альбиносы двигаются по оси X от одного края области обитания до другого со скоростью V. Вариант 5 Грузовые машины двигаются в левую верхнюю четверть области симуляции (т.е. прямоугольник с верхним-левым углом в точке 0;0, шириной/длиной = (w/2;h/2), где w и h – ширина и длина области симуляции) со скоростью V по прямой. Конечная точка движения – случайная точка в пределах этой области. Если машина сгенерировалась сразу в этой области, то она никуда не движется. По прибытии в конечную точку машина больше не движется. Легковые машины двигаются в нижнюю правую четверть области симуляции (т.е. прямоугольник с верхним-левым углом в точке w/2;h/2, шириной/длиной = (w/2;h/2), где w и h – ширина и длина области симуляции) со скоростью V по прямой. Конечная точка движения – случайная точка в пределах этой области. Если машина сгенерировалась сразу в этой области, то она никуда не движется. По прибытии в конечную точку машина больше не движется. Вариант 6 Разработчики двигаются хаотично со скоростью V. Хаотичность достигается случайной сменой направления движения раз в N секунд. Менеджеры двигаются по окружности с радиусом R со скоростью V. Вариант 7 Капитальные дома двигаются (в городах будущего и не такое возможно) в левую верхнюю четверть области симуляции (т.е. прямоугольник с верхним-левым углом в точке 0;0, шириной/длиной = (w/2;h/2), где w и h – ширина и длина области симуляции) со скоростью V по прямой. Конечная точка движения – случайная точка в пределах этой области. Если дом сгенерировался сразу в этой области, то он никуда не движется. По прибытии в конечную точку дом больше не движется. Деревянные дома после генерации начинают двигаться в нижнюю правую четверть области симуляции (т.е. прямоугольник с верхним-левым углом в точке w/2;h/2, шириной/длиной = (w/2;h/2), где w и h – ширина и длина области симуляции) со скоростью V по прямой. Конечная точка движения – случайная точка в пределах этой области. Если дом сгенерировался сразу в этой области, то он никуда не движется. По прибытии в конечную точку дом больше не движется. Вариант 8 Автомобили двигаются по оси X от одного края области симуляции до другого со скоростью V. Мотоциклы двигаются по оси Y от одного края области симуляции до другого со скоростью V. Вариант 9 Студенты двигаются хаотично со скоростью V. Хаотичность достигается случайной сменой направления движения раз в N секунд. Студентки двигаются по окружности с радиусом R со скоростью V. Вариант 10 Юр. лица двигаются в левую верхнюю четверть области симуляции (т.е. прямоугольник с верхним-левым углом в точке 0;0, шириной/длиной = (w/2;h/2), где w и h – ширина и длина области симуляции) со скоростью V по прямой. Конечная точка движения – случайная точка в пределах этой области. Если запись сгенерировалась сразу в этой области, то она никуда не движется. По прибытии в конечную точку запись больше не движется. Физ. лица двигаются в нижнюю правую четверть области симуляции (т.е. прямоугольник с верхним-левым углом в точке w/2;h/2, шириной/длиной = (w/2;h/2), где w и h – ширина и длина области симуляции) со скоростью V по прямой. Конечная точка движения – случайная точка в пределах этой области. Если запись сгенерировалась сразу в этой области, то она никуда не движется. По прибытии в конечную точку запись больше не движется. Вариант 11 Кошки двигаются по периметру области симуляции со скоростью V1 . Собаки их догоняют со скоростью V2. Вариант 12 Взрослые и птенцы двигаются в одном направлении (в стае). Направление движения меняется с периодом T и выбирается случайно. Вопросы для подготовки к защите Что такое процесс и поток (нить)? Чем определяется порядок передачи управления потокам? Какие есть способы реализации многозадачности в Java? Что необходимо сделать для создания подкласса потоков (подкласса Thread)? Когда запускается на выполнение метод run() подкласса Thread? Какими методами класса Thread необходимо запускать поток на выполнение и останавливать его? Что необходимо сделать для реализации классом интерфейса Runnable? В каких состояниях может находиться поток? Какой поток считается новым, выполняемым и завершенным? В каких ситуациях поток является невыполняемым? Что такое приоритет потока? На что он влияет? Когда возникают исключительные ситуации при работе с потоками? Что такое группы потоков и чем они полезны? Что такое родовая группа потоков и главная группа потоков? Что такое синхронизация потоков? Что такое монитор? Как можно управлять монитором? Что такое потоки-демоны? Чем они отличаются от рабочих потоков? Как передаются данные между потоками в многопоточном приложении? Что такое пулы потоков? Каков принцип их использования? Лабораторная работа 5Темы: Потоки ввода-вывода. Сериализация объектов в файл Практические заданияИзучить особенности реализации системы ввода-вывода в Java. Доработать программу, созданную в лабораторной работе № 4: добавить в главное меню команду «Консоль». По этой команде должно появляться немодальное диалоговое окно с многострочным текстовым полем, занимающим всю область окна. В это окно можно вводить команды по варианту. В это же окно выводится реакция программы на команду; для передачи команды в обрабатывающий поток использовать каналы ввода-вывода; создать конфигурационный файл для программы. В конфигурационный файл должны сохраняться все настройки симуляции, т.е. все данные и состояния, которые задаются в панели управления программы. Конфигурационный файл должен читаться при запуске программы и записываться при выходе. Формат файла текстовый; добавить в главное меню пункты «Загрузить» и «Сохранить». Команда «Сохранить» вызывает сериализацию всех «живых» объектов в ней. Команда «Загрузить» останавливает текущую симуляцию (если симуляция запущена) и загружает объекты из выбранного файла. Не забудьте скорректировать время рождения объектов. После открытия симуляцию можно запустить, загруженные объекты должны вести себя естественно; использовать стандартные файловые диалоги. Вариант 1 Реализовать в консоли команды «Старт» и «Стоп» симуляции. Кнопки в интерфейсе должны вести себя так же, как если бы нажимали их, а не исполняли команды (блокироваться по очереди). Вариант 2 Реализовать в консоли команду «Вернуть количество живых пчел-рабочих/трутней». Как параметр в команду должен передаваться идентификатор вида объекта. Вариант 3 Реализовать в консоли команды «Установить вероятность рождения золотых рыбок» и «Получить вероятность рождения золотых рыбок». Как параметр в команду установки должно передаваться значение вероятности. Полученная вероятность должна выводиться на консоль. Вариант 4 Реализовать в консоли команду «Сократить число кроликов-альбиносов на N%». Как параметр в команду должно передаваться значение N%. Вариант 5 Реализовать в консоли команды «Остановить интеллектуальное поведение объектов» и «Продолжить интеллектуальное поведение объектов». Команда «Остановить» - останавливает поток расчета интеллекта объектов, а команда «Продолжить» - возобновляет расчет после остановки. Вариант 6 Реализовать в консоли команду «Уволить всех менеджеров» и «Нанять N новых менеджеров». Первая команда удаляет всех менеджеров из симуляции (новые продолжают генерироваться), вторая – генерирует N новых менеджеров. N – параметр команды. Вариант 7 Реализовать в консоли команды «Установить вероятность генерации капитальных домов» и «Получить вероятность генерации капитальных домов». Как параметр в команду установки должно передаваться значение вероятности. Полученная вероятность должна выводиться на консоль. Вариант 8 Реализовать в консоли команду «Сократить число мотоциклов на N%». Как параметр в команду должно передаваться значение N%. Вариант 9 Реализовать в консоли команды «Показывать время симуляции» и «Скрывать время симуляции». Чекбокс в интерфейсе должен вести себя так же, как если бы использовали его, а не исполняли команды (галочка появляется/исчезает). Вариант 10 Реализовать в консоли команду «Вернуть количество существующих юридических/физических лиц в картотеке». Как параметр в команду должен передаваться идентификатор вида объекта. Вариант 11 Реализовать в консоли команды «Остановить генерацию ХХХ объектов» и «Продолжить генерацию ХХХ объектов». Чекбокс в интерфейсе должен вести себя так же, как если бы использовали его, а не исполняли команды (галочка появляется/исчезает). Вариант 12 Реализовать в консоли команду «Изменить процент птенцов». Вопросы для подготовки к защите Что такое потоки ввода-вывода и для чего они нужны? Какие классы Java являются базовыми для работы с потоками? В чем разница между байтовыми и символьными потоками? Какие стандартные потоки ввода-вывода существуют в Java, каково их назначение? На базе каких классов создаются стандартные потоки? Чем является поток System.in, System.out, System.err? Какими методами чаще всего пользуются при работе с этим потоком? Как создать файловый поток для чтения и записи данных? В чем заключается особенность создания потока, связанного с локальным файлом? Как создать поток для форматированного обмена данными, связанного с локальным файлом? Как добавить буферизацию для потока форматированного обмена данными, связанного с локальным файлом? За счет чего буферизация ускоряет работу приложений с потоками? Когда применяется принудительный сброс буферов? Для выполнения каких операций применяется класс File? Для чего предназначен класс RandomAccessFile? Чем он отличается от потоков ввода и вывода? Что такое сериализация объектов? Что такое десериализация объектов? Как объявить класс сериализуемым? Какие поля класса не сериализуются? Как можно реализовать свой алгоритм сериализации. Лабораторная работа 6Темы: Сетевые «клент-серверные» приложения Практические задания Изучить особенности реализации сетевых приложений в Java. Доработать программу, созданную в лабораторной работе № 5: создать отдельное консольное приложение, которое будет играть роль TCP-сервера. Клиентом будет приложение, которое было создано в предыдущих работах; TCP-сервер должен ожидать подключения клиентов и выдавать вновь подключенному клиенту список уже подключенных. Необходимо также внести изменения в интерфейс клиента, так чтобы в панели управления отображался список всех подключенных к серверу клиентов. При отсоединении клиентов или при подключении новых список должен обновляться; запрограммировать специальное взаимодействие по TCP с другими клиентами через сервер по варианту; Вариант 1 Реализовать выбор из одного подключенного клиента N случайных объектов и поместить в текущую симуляцию. Вариант 2 Реализовать возможность отправить N случайных объектов из текущей симуляции другому подключенному клиенту. Вариант 3 Реализовать возможность получения и установки настроек симуляции таких же как у одного из подключенных клиентов. Вариант 4 Реализовать возможность передачи своих настроек симуляции одному из подключенных клиентов. Вариант 5 Реализовать возможность обмена всех объектов одного вида на объекты такого же вида из другого подключенного клиента (например, все легковые машины из одной симуляции переходят в другую, а все легковые машины, что были в той другой симуляции, переходят в первую). Вариант 6 Реализовать возможность обмена всех объектов одного вида на объекты другого вида из другого подключенного клиента (например, все менеджеры из одной симуляции переходят в другую, а все разработчики, что были в той другой симуляции, переходят в первую). Вариант 7 Реализовать возможность скопировать и добавить в симуляцию все объекты одного из подключенных клиентов. Вариант 8 Реализовать возможность обменяться всеми объектами с одним из подключенных клиентов. Вариант 9 Реализовать возможность синхронной остановки и запуска симуляции на текущем и одном из подключенных клиентов, т.е. при остановке или запуске симуляции выбранный клиент должен также остановить или запустить симуляцию. Вариант 10 Реализовать возможность синхронной установки вероятностей появления физических и юридических лиц на текущем и одном из подключенных клиентов, т.е. при установке этих параметров на выбранном клиенте должны выставиться такие же параметры. Вариант 11 Реализовать возможность обмена объектами с выбранным клиентом. У одного собираются все кошки, у другого все собаки. Вариант 12 Реализовать передачу от клиента другому выбранному клиенту числа, получив которое число птиц его коллекции уменьшается на заданный процент. Вопросы для подготовки к защите Что такое сокеты? Какие типы сокетов существуют, чем они отличаются друг от друга? Какое преимущество имеют потоковые сокеты? Что такое IP-адрес и доменный адрес узла (хоста)? Какой класс Java используется для представления адреса хоста? Какой класс Java предназначен для работы с IP-адресами? Каким образом задается адрес узла при создании объекта, отвечающего за адрес IP? Что такое localhost? Что такое ТСР/IP ? Как создается сокетное соединение «сервер-клиент»? Какова последовательность действий приложений Java, необходимая для создания канала и передачи данных между клиентским и серверным приложением? Можно ли оборачивать потоки ввода-вывода сокетов другими потоками ввода-вывода из java.io? Почему сетевые программы в большинстве случаев являются многопоточными? Каковы недостатки и преимущества дейтаграммных сокетов? Что должны сделать приложения для работы с дейтаграммами? Какие методы применяются для посылки и получения дейтаграмм? Лабораторная работа 7Темы: Организация в Java хранения данных в базе данных Практические задания Изучить особенности реализации хранения данных в базе данных в приложениях Java. Доработать программу, созданную в лабораторной работе № 5: Добавить в меню пункты сохранение и загрузку объектов в базу данных. Можно использовать любую СУБД. Загрузку и сохранение объектов только заданного типа. Вопросы для подготовки к защите Что такое JDBC API и когда его используют? Что такое JDBC Driver и какие различные типы драйверов JDBC вы знаете? Как JDBC API помогает достичь слабой связи между Java программой и JDBC Drivers API? Что такое JDBC Connection? Покажите шаги для подключения программы к базе данных. Как используется JDBC DriverManager class? Как получить информацию о сервере базы данных из java программы? Что такое JDBC Statement? Какие различия между execute, executeQuery, executeUpdate? Что такое JDBC PreparedStatement? Что такое SQL? Что такое JDBC ResultSet?Какие существуют различные типы JDBC ResultSet?Как обработать данные, получаемые в результате выполнения запроса? |