close

Вход

Забыли?

вход по аккаунту

?

Report example of Lab 2

код для вставкиСкачать
Министерство образования Республики Беларусь
Белорусский Национальный Технический Университет
Факультет информационных технологий и робототехники
Кафедра "Программное обеспечение вычислительной техники
и автоматизированных систем"
Отчёт
по лабораторной работе № 2
по дисциплине "Разработка Internet и Web-приложений"
тема: "Основы объектно-ориентированного программирования на Java. Имена. Пакеты"
Вариант 1
Исполнители:студент группы 107319
Макарченко Вероника Валерьевна
Антонович Ольга Дмитриевна
Преподаватель:
Радкевич Андрей Сергеевич
2013-2014 учебный год
ЛАБОРАТОРНАЯ РАБОТА № 2
Основы объектно-ориентированного программирования на Java. Имена. Пакеты
Цель работы:
* ознакомление с методологией объектно-ориентированного программирования (ООП);
* ознакомление с пакетами и правилами рекомендуемого способа именование переменных и идентиикаторов в Java;
* закрепление навыков разработки Java-программ с использованием методологии ООП.
Изучаемые вопросы:
* методология ООП (абстрагирование, класс, объект, инкапсуляция, наследование и полиморфизм) и объектная модель Java;
* классы: заголовок класса, тело класса; объявление полей, констант, методов и конструкторов; класс Object;
* вложенные (nested), внутренние (inner) и анонимные (anonymous) классы;
* статические элементы класса (методы и поля);
* наследование: абстрактные классы и методы;
* использование ключевых слов super, this и final; логические блоки (блоки инициализации);
* полиморфизм: поля, методы (перегрузка и переопределение), объекты;
* инкапсуляция: разграничение доступа в Java, модификаторы доступа (private, public, protected и модификатор доступа по умолчанию);
* передача параметров в методы: по ссылке и по значению; методы с переменным числом параметров;
* пакеты (package), импортирование пакетов.
Постановка задачи:
1) Основное задание (на 0 - 10 баллов): необходимо придумать иерархию сущностей соответствующей проблемной области (проблемная область у каждого студента должна быть своя и предварительно согласованная с преподавателем). Затем необходимо создать консольное приложение работы с моделью, удовлетворяющее нижеприведённым требованиям, и продемонстрировать её работоспособность на примере выполнения какого-либо задания (пример модели сущности и задания смотрите в ПРИЛОЖЕНИИ A).
Требования к программе: * использовать методологию ООП-разработки: абстрагирование, инкапсуляцию, наследование, полиморфизм, описание классов, интерфейсов и перечислений;
* классы каждой сущности должны иметь соответствующие аксессоры (get- и set-методы для доступа к состоянию объекта) и корректно переопределённые методы класса Object toString(), equals() и hashCode();
* при проектировании пользовательских типов использовать принцип одной обязанности (Single Responsibility Principle);
* пользовательские типы верхнего уровня должны быть грамотно разложены по пакетам (соответственно классы сущности в одном пакете, классы бизнес логики - в другом, утилитные/вспомогательные классы - в третьем и т.д.);
* название пользовательских типов, идентификаторов и пакетов должно быть осмысленным и информативным;
* любые типы отношений между классами (агрегация, ассоциация, наследование и т.д.) должны применяться лишь тогда, когда это имеет смысл;
* работа с консолью должна быть минимальным;
* для создания объектов пользовательских типов, а также хранения параметров инициализации можно использовать файлы.
2) Пункт не для слабаков: пройти тест Java Test 2:Operators and Assignments.
Задания могут быть выполнены как c помощью использования текстового редактора и основных компонентов Java, так и с помощью применения интегрированных средств разработки (Integrated Development Environment, IDE): NetBeans, Eclipse, Oracle JDeveloper и др.
При написании программ придерживайтесь соглашений по написанию кода на JAVA (см. файл CodeConventions.pdf и JavaCodingGuidelines.doc)..
Индивидуальное задание:
Предметная область - энергетика.
Результаты выполнения лабораторной работы:
Рисунок 1 - Результат выполнения лабораторной работы
Что мы освоили в процессе выполнения лабораторной работы:
В данной работе мы научились описывать и использовать классы на Java, освоили основные принципы ООП - инкапсуляцию, наследование, полиморфизм, а также использование интерфейсов и перечислений, научились переопределять методы, определили аксессоры для закрытых полей классов (get- и set-методы для доступа к состоянию объекта). Ознакомились с соглашением по написанию кода на JAVA. При проектировании пользовательских типов использовали принцип одной обязанности.
Какие можно сделать выводы:
В результате выполнения лабораторной работы была спроектирована иерархия классов по предметной области - энергетика. Она включает в себя базовый класс PowerStation и 3 класса наследника, описывающие разновидности станций. Таким образом мы освоили новые возможности программирования на Java? А также закрепили уже существующие знания.
ПРИЛОЖЕНИЕ
Листинг программных кодов
Файл PowerStation.java
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package javaapplication1;
/**
*
* @author Dell
*/
enum Position
{
Director, Shareholder
}
public class PowerStation implements IPowerStation {
private int power;
private int annualPower;
private Position pos;
public void setPower(int power)
{
this.power = power;
}
public int getPower()
{
return power;
}
public void setAnnualPower(int annualPower)
{
this.annualPower = annualPower;
}
public int getAnnualPower()
{
return annualPower;
}
public void setPosition(Position pos)
{
this.pos = pos;
}
public Position getPosition()
{
return pos;
}
PowerStation(int power, int annualPower, Position pos)
{
super();
this.power = power;
this.annualPower = annualPower;
this.pos = pos;
}
@Override
public void Print()
{
System.out.println("Power of station: "+getPower());
System.out.println("Annual power of station: " + getAnnualPower());
System.out.println("Leader: " + getPosition());
}
@Override
public boolean equals(Object o) {
return ( o instanceof PowerStation ) ? ( power == ((PowerStation)o).getPower() ) : super.equals(o);
}
@Override
public int hashCode() {
int hash = 7;
hash = 67 * hash + this.power;
return hash;
}
}
Файл HydroPowerStation.java
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package javaapplication1;
/**
*
* @author Dell
*/
public class HydroPowerStation extends PowerStation implements IPowerStation{
private int numberOfTurbinesy;
private int damHeight;
private int damWidth;
private int damThickness;
public void setNumberOfTurbinesy(int numberOfTurbinesy)
{
this.numberOfTurbinesy = numberOfTurbinesy;
}
public int getNumberOfTurbinesy()
{
return numberOfTurbinesy;
}
public void setDamHeight(int damHeight)
{
this.damHeight = damHeight;
}
public int getDamHeight()
{
return damHeight;
}
public void setDamWidth(int damWidth)
{
this.damWidth = damWidth;
}
public int getDamWidth()
{
return damWidth;
}
public void setDamThickness(int damThickness)
{
this.damThickness = damThickness;
}
public int getDamThickness()
{
return damThickness;
}
HydroPowerStation(int power, int annualPower, Position pos, int numberOfTurbinesy, int damHeigh, int damWidth, int damThickness)
{
super(power, annualPower, pos);
this.numberOfTurbinesy = numberOfTurbinesy;
this.damHeight = damHeigh;
this.damWidth = damWidth;
this.damThickness = damThickness;
}
@Override
public void Print()
{
//System.out.println("Power of station: "+getPower());
//System.out.println("Annual power of station: " + getAnnualPower());
System.out.println("Leader: " + getPosition());
System.out.println("Number of turbinesy: " + getNumberOfTurbinesy());
System.out.println("Height of dam: " + getDamHeight());
System.out.println("Width of dam: " + getDamWidth());
System.out.println("Thickness of dam: " + getDamThickness());
System.out.println("");
}
public int DamSquare(int damHeight, int damWidth)
{
int s = damHeight * damWidth;
return s; }
public int DamVolume(int damHeight, int damWidth, int damThicknes)
{
int volume = damHeight*damWidth*damThicknes;
return volume;
}
@Override
public String toString()
{
return "Power of station: " + this.getPower()+" Annual power of station: "+this.getAnnualPower();
}
}
Файл NuclearPowerStation.java
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package javaapplication1;
/**
*
* @author Dell
*/
public class NuclearPowerStation extends PowerStation implements IPowerStation{
private int numberOfUnits;
private int lifetime;
public void setNumberOfUnits(int numberOfUnits)
{
this.numberOfUnits = numberOfUnits;
}
public int getNumberOfUnitsy()
{
return numberOfUnits;
}
public void setLifetime(int lifetime)
{
this.lifetime = lifetime;
}
public int getLifetime()
{
return lifetime;
}
NuclearPowerStation (int power, int annualPower, Position pos, int numberOfUnits, int lifetime)
{
super(power, annualPower, pos);
this.numberOfUnits = numberOfUnits;
this.lifetime = lifetime;
}
public void Print()
{
System.out.println("Power of station: "+getPower());
System.out.println("Annual power of station: " + getAnnualPower());
System.out.println("Leader: " + getPosition());
System.out.println("Number of power units: " + getNumberOfUnitsy());
System.out.println("Lifetime station: " + getLifetime());
System.out.println("");
}
}
Файл ThermalPowerStation.java
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package javaapplication1;
/**
*
* @author Dell
*/
public class ThermalPowerStation extends PowerStation implements IPowerStation{
private String fuel;
public void setFuel(String fuel)
{
this.fuel = fuel;
}
public String getFuel()
{
return fuel;
}
ThermalPowerStation(int power, int annualPower, Position pos, String fuel)
{
super(power, annualPower, pos);
this.fuel = fuel;
}
public void Print()
{
System.out.println("Power of station: "+getPower());
System.out.println("Annual power of station: " + getAnnualPower());
System.out.println("Leader: " + getPosition());
System.out.println("Type of fuel: " + getFuel());
System.out.println("");
}
}
Файл IPowerStation.java
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package javaapplication1;
/**
*
* @author Dell
*/
public interface IPowerStation {
public void Print();
}
Файл JavaApplication1.java
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package javaapplication1;
/**
*
* @author Dell
*/
public class JavaApplication1 {
/**
* @param args the command line arguments
*/
public static void main(String[] args) {
// TODO code application logic here
ThermalPowerStation t1 = new ThermalPowerStation(115, 500, Position.Director, "natural gas");
NuclearPowerStation n1 = new NuclearPowerStation(1194, 440000, Position.Shareholder, 2, 60);
HydroPowerStation h1 = new HydroPowerStation(662, 4100000, Position.Director, 8, 44, 2500, 11);
PowerStation p1 = new PowerStation(10, 20, Position.Director);
PowerStation p2 = new PowerStation(10, 20, Position.Director);
t1.Print();
n1.Print();
String s = h1.toString();
System.out.println(s);
h1.Print();
System.out.println(p1.equals(p2));
}
}
Документ
Категория
Рефераты
Просмотров
37
Размер файла
59 Кб
Теги
report, example, lab
1/--страниц
Пожаловаться на содержимое документа