Обьекто-ориентированное программирование
Создание класса Triangle для представления треугольника. Изучение конструкторов с проверкой корректности задания сторон, сравнения треугольников на равенство. Анализ математических формул для реализации программирования Java и среды разработки NetBeans.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | реферат |
Язык | русский |
Дата добавления | 17.06.2016 |
Размер файла | 160,5 K |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
Размещено на http://www.allbest.ru/
Оглавление
triangle треугольник программирование java
Введение
1. Постановка задачи
2. Подход к реализации
3. Реализация
4. Тестирование
Заключение
Список используемых источников
Введение
Объектно-ориентированное программирование (ООП) позволяет разложить проблему на составные части, каждая из которых становится самостоятельным объектом. Каждый из объектов содержит свой собственный код и данные, которые относятся к этому объекту.
Любая программа, написанная на языке ООП, отражает в своих данных состояние физических предметов либо абстрактных понятий - объектов программирования, для работы, с которыми она предназначена.
Все данные об объекте программирования и его связях с другими объектами можно объединить в одну структурированную переменную. В первом приближении ее можно назвать объектом.
С объектом связывается набор действий, иначе называемых методами. С точки зрения языка программирования набор действий или методов - это функции, получающие в качестве обязательного параметра указатель на объект и выполняющие определенные действия с данными объекта программирования. Технология ООП запрещает работать с объектом иначе, чем через методы, таким образом, внутренняя структура объекта скрыта от внешнего пользователя. Описание множества однотипных объектов называется классом.
Объект - это структурированная переменная, содержащая всю информацию о некотором физическом предмете или реализуемом в программе понятии.
Класс - это описание множества объектов программирования (объектов) и выполняемых над ними действий.
Класс можно сравнить с чертежом, согласно которому создаются объекты. Обычно классы разрабатывают таким образом, чтобы их объекты соответствовали объектам предметной области решаемой задачи.
Основными понятиями ООП являются:
Инкапсуляция данных (от "капсула") - это механизм, который объединяет данные и код, манипулирующий с этими данными, а также защищает и то, и другое от внешнего вмешательства или неправильного использования. В ООП код и данные могут быть объединены вместе (в так называемый «черный ящик») при создании объекта. Внутри объекта коды и данные могут быть закрытыми или открытыми. Закрытые коды или данные доступны только для других частей того же самого объекта и, соответственно, недоступны для тех частей программы, которые существуют вне объекта. Открытые коды и данные, напротив, доступны для всех частей программы, в том числе и для других частей того же самого объекта.
Наследование. Новый, или производный класс может быть определен на основе уже имеющегося, или базового класса. При этом новый класс сохраняет все свойства старого: данные объекта базового класса включаются в данные объекта производного, а методы базового класса могут быть вызваны для объекта производного класса, причем они будут выполняться над данными включенного в него объекта базового класса. Иначе говоря, новый класс наследует как данные старого класса, так и методы их обработки. Если объект наследует свои свойства от одного родителя, то говорят об одиночном наследовании. Если объект наследует данные и методы от нескольких базовых классов, то говорят о множественном наследовании.
Полиморфизм - это свойство, которое позволяет один и тот же идентификатор (одно и то же имя) использовать для решения двух и более схожих, но технически разных задач. Целью полиморфизма, применительно к ООП, является использование одного имени для задания действий, общих для ряда классов объектов. Такой полиморфизм основывается на возможности включения в данные объекта также и информации о методах их обработки (в виде указателей на функции). Будучи доступным в некоторой точке программы, объект, даже при отсутствии полной информации о его типе, всегда может корректно вызвать свойственные ему методы.
1. Постановка задачи
Создать класс Triangle для представления треугольника. Поля класса - длины сторон. Требуется реализовать операции: вычисления углов треугольника, вычисления площади, вычисления периметра, вычисления высот, определения вида треугольника (равносторонний, равнобедренный, прямоугольный), конструкторы с проверкой корректности задания сторон, сравнение треугольников на равенство (метод equals()), строковая запись треугольника (метод toString()).
2. Подход к реализации
В задании указано найти у треугольника, заданного пользователем длинами трех сторон, углы, площадь, периметр, высоты и определить вид треугольника. Сравнить на равенство два треугольника.
Для реализации необходимо использовать следующие математические формулы:
нахождение периметра (1)
полупериметр p = P/2 (2)
площадь треугольника (3)
вычисление угла по двум сторонам б = arcos ((b2+c2-a2)/2*a*b) (4)
вычисление высоты h = 2S/б (5)
Определяя вид треугольника, обозначим возможные варианты:
равносторонний треугольник - все стороны равны,
равнобедренный - две стороны треугольника равны,
прямоугольный - имеется угол 90о.
Для определения равенства сторон воспользуемся третьим признаком равенства треугольников: если три стороны одного треугольника соответственно равны трем сторонам другого треугольника, то такие треугольники равны.
3. Реализация
Для реализации задачи воспользуемся языком программирования Java и средой разработки NetBeans.
Создадим два класса: Triangle и Test. В классе Triangle будут описаны все методы, необходимые для реализации задачи, а в классе Test будет происходить тестирование.
Определение угла между сторонами a и b в градусах:
double angle_ab() //угол ab
{
return ((acos((a*a+b*b-c*c)/(2*a*b))))*180/PI;
}
Вычисление площади:
double area() // площадь треугольника
{
double p = (a + b + c) / 2;
return ar=sqrt(p*(p-a)*(p-b)*(p-c));
}
Нахождение периметра:
double perimetr() //периметр
{
return a+b+c;
}
Определение высоты:
double height_a() //высота a
{
return (2*ar)/a;
}
Определение вида треугольника:
/*ВИД ТРЕУГОЛЬНИКА*/
public String Char(){
if((a==b & a!=c) || (b==c & a!=c) || (c==a & a!=b))
{
return "Равнобедренный";
}
if(a==b & b==c & c==a){
return "Равносторонний";
}
if(A==90 || B==90 || C==90){
return "Прямоугольный";
}
else{
return "Обычный";
}
}
Для того что бы сравнивать треугольники, требуется ввести параметры второго треугольника (из класса Test):
System.out.println("Будем сравнивать треугольники y/n");
r = sc.next();
Сравнивая треугольники по трем соответственным сторонам, необходимо соотнести стороны треугольника. Для этого отсортируем их:
private void Sort (){
double x;
if (a > b) {
x = a;
a = b;
b = x;
}
if (b > c) {
x = b;
b = c;
c= x;
}
if (a > b) {
x = a;
a = b;
b = x;
}
}
Далее, переопределим метод equals, что бы он сравнивал стороны наших треугольников, а не их адреса:
// сравнение треугольников на равенство (метод equals()),
public boolean equals (Triangle t){
Sort();
t.Sort();
if(this.a == t.a && b == t.b && c == t.c) return true;
else return false;
}
Для представления строковой записи треугольника, переопределим метод toString:
@Override
public String toString(){
return "треугольник со сторонами "+a+";"+b+";"+c+"";}
В классе Test выполняются методы класса Triangle.
4. Тестирование
Ввод данных осуществляется пользователем. У пользователя запрашивается будем ли сравнивать треугольники и при положительном ответе вводятся параметры нового треугольника:
System.out.println("Будем сравнивать треугольники y/n");
r=sc.next();
if(r.equals("y")){
//и создадим экземпляр второго треугольника
System.out.println("Длинна стороны a");
a = sc.nextDouble();
System.out.println("Длинна стороны b");
b = sc.nextDouble();
System.out.println("Длинна стороны c");
c = sc.nextDouble();
В первом тесте для первого треугольника зададим следующие параметры - 4, 5, 3. Для второго - 4, 3, 5. Результат работы представлен на рисунке 1.
Рисунок 1 - Результат первого теста
Во втором тесте укажем следующие длины - 4, 8, 6 и 4, 8, 7 соответственно. Результат работы программы показан на рисунке 2.
Рисунок 2-Результат второго теста
В третьем тесте введем данные не существующего треугольника и посмотрим результат (рисунок 3).
Рисунок 3- Обработка исключения
Заключение
В ходе контрольной работы был реализован класс Triangle со всему требующимися функциями. Получены навыки объектно-ориентированного программирования.
Список используемых источников
1. Васильев А.Н. Java Объектно-ориентированное программирование - СПб.: Питер, 2011. - 397 с.
2. Макарычев Ю.Н. Тригонометрия 10 класс, 6-е издание - Просвещение, 2013. - 245с.
Размещено на Allbest.ru
Подобные документы
Методология объектно-ориентированного программирования в Java. Понятия класса, объекта и объектной переменной. Динамическая и статическая объектные модели. Логическое структурирование приложения. Наследование в Java. Отличия интерфейсов от классов.
курс лекций [547,2 K], добавлен 01.05.2014Описание языков программирования Java и JavaFX. Среда разработки NetBeans и класс численных методов. Архитектура и принцип работы апплета с понятным пользовательским интерфейсом. Разработка алгоритма программы на примере модели межвидовой конкуренции.
курсовая работа [1023,2 K], добавлен 19.09.2012Понятие алгоритма и его характеристики как основного элемента программирования. Формы представления алгоритмов, основные алгоритмические структуры. Структурное и событийно-ориентированное программирование. Объектно-ориентированное программирование.
реферат [86,0 K], добавлен 17.07.2008Разработка графического редактора для рисования двухмерной и трехмерной графики, используя язык программирования Java и интерфейсы прикладного программирования Java 2D и Java 3D. Создание графического редактора 3D Paint. Основные методы класса Graphics.
курсовая работа [197,5 K], добавлен 19.11.2009Создание языка программирования с помощью приложения "Java". История названия и эмблемы Java. Обзор многообразия современных текстовых редакторов. Обработка строки. Методы в классе String. Java: задачи по обработке текста. Примеры программирования.
курсовая работа [276,1 K], добавлен 19.07.2014Описание и установка интегрированной среды разработки Eclipse. Описание языка Java. Описание классов и методов, пакетов, использованных в программе, сервера и клиента. Разработка руководства пользователя для клиента и сервера. Пример работы чата.
курсовая работа [443,5 K], добавлен 18.05.2015История развития языка программирования Java. История тетриса - культовой компьютерной игры, изобретённой в СССР. Правила проведения игры, особенности начисления очков. Создание интерфейса программы, ее реализация в среде Java, кодирование, тестирование.
курсовая работа [168,1 K], добавлен 27.09.2013Объектно-ориентированное программирование как методология программирования, опирающаяся на инкапсуляции, полиморфизме и наследовании. Общая форма класса. Наследование как процесс, посредством которого один объект получает свойства другого объекта.
презентация [214,9 K], добавлен 26.10.2013Основы учебной системы на языке программирования Java. Регистрация, раздача учебного материала, проверка знаний, способы выдачи и принятия информации. Базовые характеристики системы, инструкция использования, некоторые особенности поведения программы.
курсовая работа [1,0 M], добавлен 07.05.2009Класс как специальная структура для хранения разнотипной информации о физическом объекте. Порядок объявления класса, его специальные элементы-функции. Создание указателя на объект. Особенности конструкторов и деструкторов. Собственные операции класса.
курсовая работа [483,1 K], добавлен 07.04.2014