Файл: «История и развитие методологии объектно-ориентированного программирования. Сферы применения».pdf

ВУЗ: Не указан

Категория: Курсовая работа

Дисциплина: Не указана

Добавлен: 21.05.2023

Просмотров: 335

Скачиваний: 3

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Рисунок 16 – Интерфейс вкладки «Склады» разработанной системы

Рисунок 17 – Диалоговое окно для выбора пути экспорта данных

Результат экспорта данных по соответствующей таблице в табличного редактора MS Excel показано на рис. 18. Эта возможность предусмотрена для всех таблиц

Рисунок 18 – Результат экспорта данных по соответствующей таблице в табличного редактора MS Excel

Интерфейс вкладки «Упаковать» разработанной системы показан на рис. 19.

Рисунок 19 – Інтерфейс вкладки «Упакувати» розробленої системи

В данной вкладке происходит упаковка грузов по контейнерам и визуализация. В первом пункте «Добавить товары» с помощью кнопок с левой таблицы в правую можно переместить товары, определив их количество.

Также надо определить цвет, который будет использован при визуализации.

Пример добавления товаров для упаковки показано на рис. 20. Из списка с выбранными товарами можно удалить товары, если они выбраны ошибочно.

Предусмотрено отключение кнопок, которые нельзя выбрать, работая с одной из частей.

Во втором пункте можно выбрать контейнеры, которые желательны или полностью передать выбор алгоритма программы, выбрав флажок.

После окончательного выбора товаров и контейнеров надо нажать кнопку «Рассчитать».

Тогда появляется 3D-визуализация контейнера. С помощью слайдеров можно поворачивать модель, как показано на рисунке 21.

Пример визуального размещения товаров в контейнере показано на рисунке 22.

Рисунок 21 – Пример добавления товаров для упаковки

Рисунок 22 – Пример визуального размещения товаров в контейнере

Выводы по главе 3

В рамках данной главы рассмотрена разработка проектной и программной частей системы распределения грузов. Программная реализация выполнена с использованием базирующегося на ООП методологии языка программирования Java для закрепления основных изученных теоретических нюансов, принципов и положений. В качестве средств реализации были использованы язык Java, среда разработки NetBeans, библиотека JavaFX.

Выполнение данной главы позволило практически закрепить знания и получить полезные навыки в использовании методологии ООП для решения конкретных задач.


ЗАКЛЮЧЕНИЕ

В рамках первой главы проведен анализ ряда литературных источников по существующим языкам программирования и методологиям написания программ. Даны определения терминов: языки программирования, высокоуровневый язык программирования. Рассмотрены исторические аспекты возникновения языков программирования и объектно-ориентированной методологии разработки программного обеспечения. Рассмотрена классификация и специфика языков программирования высокого уровня в их историческом разрезе. Приведено генеалогическое дерево их исторического развития с 1960 по 2000 годы. Приведена диаграмма востребованности современных языков программирования на практике.

В рамках второй главы описана специфика методологии ООП в современных языках программирования, реализующих данную парадигму разработки программного обеспечения. Приведены определения и иллюстрации, поясняющие принципы инкапсуляции, наследования и полиморфизма, а также принцип абстракции. Описаны функциональные возможности и преимущества объектно-ориентированных языков программирования Java, C# и Python, как наиболее распространенных на практике в современной разработке.

В рамках третьей главы рассмотрена разработка проектной и программной частей системы распределения грузов. Программная реализация выполнена с использованием базирующегося на ООП методологии языка программирования Java для закрепления основных изученных теоретических нюансов, принципов и положений. В качестве средств реализации были использованы язык Java, среда разработки NetBeans, библиотека JavaFX. Выполнение данной главы позволило практически закрепить знания и получить полезные навыки в использовании методологии ООП для решения конкретных задач.

Таким образом можно утверждать, что поставленная задача данной работы является выполненной в полном объеме. В процессе выполнения работы были решены следующие поставленные задачи

  1. Проведен обзор исторических предпосылок создания языков и методологий программирования.
  2. Проведена классификация и описание специфики языков программирования высокого уровня.
  3. Выполнен анализ основных принципов и сущности методологии ООП.
  4. Проведен анализ возможностей современных языков программирования, которые основаны на реализации ООП парадигмы.
  5. Разработано программное обеспечение на базе использования ООП.

Следует отметить, что ООП является мощной и перспективной методологией, применяющейся на практике для решения самых разнообразных задач программирования. Знание ООП требуются при трудоустройстве практически в любой компании на должность инженера-программиста или разработчика программного обеспечения, что обуславливает важность и актуальность изучения данной тематики.

БИБЛИОГРАФИЯ

  1. Голицына О.Л., Партыка Т.Л., Попов И.И. Языки программирования Учебное пособие. – М.: Форум, 2011. – 400 с.
  2. Забудский Е.И. Объектно-ориентированный анализ и программирование на языке C# — М.: Кафедра ОИиППО ГУ-ВШЭ, 2012. — 705 с.
  3. Камаев В.А., Костерин В.В. Технологии программирования. – М.: Высш. шк., 2006. – 454 с.
  4. Лафоре Р. Структуры данных и алгоритмы в Java. Классика Computers Science.— СПб.: Питер, 2013. — 704 с.
  5. Могилев А.В., Листрова Л.В. Методы программирования. Компьютерные вычисления. – СПб.: БХВ-Петербург, 2013. — 320 с.
  6. Монахов В.В. Язык программирования Java и среда NetBeans. – СПб.: БХВ-Петербург, 2011. – 704 с.
  7. Нейгел К., Ивьен Б., C# 5.0 и платформа .NET 4.5 для профессионалов. М.: Академия, 2014. – 1440 с.
  8. Нимейер П. Программирование на Java. – Москва: Эксмо, 2014. – 1216 с.
  9. Орлов С.А. Теория и практика языков программирования. – СПб.: Питер, 2014. – 690 с.
  10. Пратт Т. Языки программирования. Разработка и реализация. – М.: Мир, Москва, 2011. – 574 с.
  11. Портянкин И. Swing. Эффективные пользовательские интерфейсы. СПб.: Питер, 2010 . – 337 с.
  12. Рихтер Д. Программирование на платформе Microsoft .NET Framework 4.0 на языке C#. – СПб.: Питер, 2012. – 720 с.
  13. Себеста Р. Основные концепции языков программирования. Concepts of Programming Languages. – М.: Эксмо, 2011. – 512 с.
  14. Седжвик Р., Уэйн К.. Алгоритмы на Java. – М.: ООО “И.Д. Вильямс”, 2013. – 848 с.
  15. Сьерра К. Изучаем Java. – М.: Эксмо, 2014. – 708 с.
  16. Синицын С. Программирование на языке высокого уровня. – СПб.: Академия, 2011. – 400 с.
  17. Тюгашев А.А.. Основы программирования. – СПб.: Университет ИТМО, 2016. – 160 с.
  18. Хахаев И. А. - Практикум по алгоритмизации и программированию. – М.: Альт Линукс, 2010. – 126 с.
  19. Хорстманн С., Корнелл Г. Java. Библиотека профессионала. – М.: ООО “И.Д. Вильямс”, 2014. – 864 с.
  20. Шилдт Г. Java. Полное руководство, 8-е изд. – М.: ООО “И.Д. Вильямс”, 2012. – 1104 с.
  21. Шилдт Г. Swing: руководство для начинающих. – М.: ООО “И.Д. Вильямс”, 2011. – 704 с.
  22. Эванс Б., Вербург М. Java. Новое поколение разработки. – СПб.: Питер, 2014. — 560 с.
  23. Эккель Б. Философия Java. – СПб.: Питер, 2015. – 1168 с.

ПРИЛОЖЕНИЕ

Data.java

package main;

import java.util.Iterator;

import java.util.List;

import javax.faces.bean.ManagedBean;

import javax.faces.bean.SessionScoped;

import org.hibernate.Query;

import org.hibernate.Session;

/**

*

* @author Aline

*/

@ManagedBean

@SessionScoped

public class Data implements AutoCloseable{

private final Session session;

public Data(){

session = HibernateUtil.getSessionFactory().openSession();

}

public List loadGoodsList(){

return session.createCriteria(Goods.class).list();

}

public List loadContainersList(){

return session.createCriteria(Containers.class).list();

}

public List loadStoresList(){

return session.createCriteria(Stores.class).list();

}

public List loadListofgoods(int number){

session.beginTransaction();

Query query = session.createQuery("from Listofgoods where idContainer = :number");

query.setParameter("number", number);

List l = query.list();

Iterator<Listofgoods> it = l.iterator();

while (it.hasNext()) {

Listofgoods tmp = it.next();

query = session.createQuery("select g.name from Goods g where g.idGood = :idGood");

query.setParameter("idGood", tmp.getIdGood());

if (!query.list().isEmpty()) tmp.setName(query.list().get(0).toString());

}

session.getTransaction().commit();

return l;

}

public List loadTypesList(){

session.beginTransaction();

Query query = session.createQuery("SELECT t.type FROM Types t");

session.getTransaction().commit();

return query.list();

}

public List loadStoreTypesList(int idStore){

session.beginTransaction();

Query query = session.createQuery("SELECT t.type FROM Listoftypes l, Types t WHERE t.idType = l.idType and l.idStore = :id");

query.setParameter("id", idStore);

session.getTransaction().commit();

return query.list();

}

public List loadContainertypesList(){

session.beginTransaction();

Query query = session.createQuery("SELECT c.containertype FROM Containertype c");

session.getTransaction().commit();

return query.list();

}

public void addGood(Goods g){

session.beginTransaction();

session.save(g);

session.getTransaction().commit();

}

public int addContainer(Containers c){

session.beginTransaction();

session.save(c);

session.getTransaction().commit();

return c.getIdContainer();

}

public void addStore(Stores s){

session.beginTransaction();

session.save(s);

session.getTransaction().commit();

}

public void deleteGood(int id){

session.beginTransaction();

session.delete(session.get(Goods.class, id));

session.getTransaction().commit();

}

public void deleteContainer(int id){

session.beginTransaction();

session.delete(session.get(Containers.class, id));

session.getTransaction().commit();

}

public void deleteStore(int id){

session.beginTransaction();

session.delete(session.get(Stores.class, id));

session.getTransaction().commit();

}

public void updateGood(Goods g){

session.beginTransaction();

session.update(g);

session.getTransaction().commit();

}

public void updateStore(Stores s){

session.beginTransaction();

session.update(s);

session.getTransaction().commit();

}

@Override

public void close(){

session.close();

HibernateUtil.getSessionFactory().close();

}

}

HibernateUtil.java

package main;

import org.hibernate.cfg.AnnotationConfiguration;

import org.hibernate.SessionFactory;

public class HibernateUtil {

private static final SessionFactory sessionFactory;

static {

try {

// Create the SessionFactory from standard (hibernate.cfg.xml)

// config file.

sessionFactory = new AnnotationConfiguration().configure().buildSessionFactory();


} catch (Throwable ex) {

// Log the exception.

System.err.println("Initial SessionFactory creation failed." + ex);

throw new ExceptionInInitializerError(ex);

}

}

public static SessionFactory getSessionFactory() {

return sessionFactory;

}

}

Main.java

package main;

import javafx.application.Application;

import javafx.application.Platform;

import javafx.event.EventHandler;

import javafx.fxml.FXMLLoader;

import javafx.scene.Parent;

import javafx.scene.Scene;

import javafx.stage.Stage;

import javafx.stage.WindowEvent;

public class Main extends Application {

@Override

public void start(Stage stage) throws Exception {

Parent root = FXMLLoader.load(getClass().getResource("FXMLDocument.fxml"));

Scene scene = new Scene(root);

stage.setTitle("Система разделения грузов");

stage.setScene(scene);

stage.show();

stage.setOnCloseRequest(new EventHandler<WindowEvent>() {

@Override

public void handle(WindowEvent t) {

Platform.exit();

System.exit(0);

}

});

}

/**

* @param args the command line arguments

*/

public static void main(String[] args) {

launch(args);

}

}

Logic.java

package main;

import java.util.List;

import javafx.scene.paint.Color;

import javafx.scene.paint.PhongMaterial;

import javafx.scene.shape.Box;

import javafx.scene.shape.DrawMode;

/**

*

* @author Aline

*/

class Element{

String name;

double mass;

int width, height, depth;

String contType;

String colour;

int variants;

int x = 1000000, y = 1000000, z = 1000000;

public Element(String name, double mass, int width, int depth, int height, String contType, String colour){

this.name = name;

this.mass = mass;

this.width = width;

this.height = height;

this.depth = depth;

this.contType = contType;

this.colour = colour;

}

}

public class Logic {

Element[] elements;

int contHeight = 300;

int contDepth = 300;

int contWidth = 300;

int[][][] container = new int[contHeight][contDepth][contWidth];

public void start(List list){

int tmp = 0;

for(int i = 0; i < list.size(); i++){

tmp += Integer.parseInt(list.get(i).toString().split(", ")[1].split(" ")[0]);

}

elements = new Element[tmp];

int k = 0;

for(int i = 0; i < list.size(); i++){

String[] temp = list.get(i).toString().split(", ");

String[] temp2 = temp[3].split("x");

for(int j = 0; j < Integer.parseInt(temp[1].split(" ")[0]); j++)

elements[k++] = new Element(temp[0], //name

Double.parseDouble(temp[2].split(" ")[0]), //mass

Integer.parseInt(temp2[0]), //width

Integer.parseInt(temp2[1]), //depth

Integer.parseInt(temp2[2]), //height

temp[4], //contType

temp[5]); //colour

}

setVariants();

sort();

pack();

}

public void setVariants(){

for (Element element : elements) {

int variantsPlacement = 0;

if(element.width <= contWidth && element.height <= contHeight && element.depth <= contDepth)

variantsPlacement++;

if(element.width <= contWidth && element.depth <= contHeight && element.height <= contDepth)

variantsPlacement++;

if(element.height <= contWidth && element.width <= contHeight && element.depth <= contDepth)

variantsPlacement++;

if(element.height <= contWidth && element.depth <= contHeight && element.width <= contDepth)

variantsPlacement++;

if(element.depth <= contWidth && element.height <= contHeight && element.width <= contDepth)

variantsPlacement++;

if(element.depth <= contWidth && element.width <= contHeight && element.height <= contDepth)

variantsPlacement++;

element.variants = variantsPlacement;

}

}

public void sort(){

boolean swapped = true;