Автор работы: Пользователь скрыл имя, 30 Октября 2013 в 00:09, курсовая работа
Об'єктно-орієнтоване програмування — одна з парадигм програмування, яка розглядає програму, як множину “об'єктів”, що взаємодіють між собою. В ній використано декілька технологій від попередніх парадигм, зокрема успадкування, модульність, поліморфізм та інкапсуляцію. Не зважаючи на те, що ця парадигма з'явилась в 1960-тих роках, вона не мала широкого застосування до 90-х років. На сьогодні багато із мов програмування підтримують ООП. Серед яких є С++, Java, Objective-C, Clips, Python, PHP. В даній курсовій роботі ми будемо використовувати мову програмування Java, яка є зручним інстрементом для реалізаціі функціоналу, та створення графічного інтерфейсу програми.
Вступ.........................................................................................................................4
1. Об’єктно-орієнтована побудова логічних схем. Постанова задачі та основні визначення.............................................................................................................5
2. Відомості о Java................................................................................................6
3. Іднівідуальне завдання.....................................................................................7
4. Інструкціі по експлуатаціі розробленої програми.........................................8
5. Тестування роботи програми згідно з заданим варіантом............................10
Висновки………………………………………………………………..…..…....11
Список літератури……………………………………….............................……12
Додаток 1. Код програми
Зміст
Вступ.........................
1. Об’єктно-орієнтована
побудова логічних схем. Постанова
задачі та основні визначення..
2. Відомості о Java..............
3. Іднівідуальне завдання........
4. Інструкціі по експлуатаціі
розробленої програми..........
5. Тестування роботи
програми згідно з заданим
варіантом.....................
Висновки…………………………………………………………
Список літератури…………………………………
Додаток 1. Код програми
3
Вступ
Основною метою виконання курсової роботи є здобуття студентами навиків створення елементів об’єктно-орієнтованих програмних продуктів. Типовим завданням виконання курсової роботи є об’єктно-орієнтоване моделювання схем з’єднання логічних елементів.
Об'єктно-орієнтоване програмування — одна з парадигм програмування, яка розглядає програму, як множину “об'єктів”, що взаємодіють між собою. В ній використано декілька технологій від попередніх парадигм, зокрема успадкування, модульність, поліморфізм та інкапсуляцію. Не зважаючи на те, що ця парадигма з'явилась в 1960-тих роках, вона не мала широкого застосування до 90-х років. На сьогодні багато із мов програмування підтримують ООП. Серед яких є С++, Java, Objective-C, Clips, Python, PHP. В даній курсовій роботі ми будемо використовувати мову програмування Java, яка є зручним інстрементом для реалізаціі функціоналу, та створення графічного інтерфейсу програми.
1. Об’єктно-орієнтована побудова логічних схем. Постанова задачі та основні визначення
Метою цього завдання є визначення примітивних логічних елементів і опис схеми з'єднання елементів між собою. Спочатку дамо визначення основним термінам, якими ми будемо оперувати:
Логічна схема — об'єднання деяких примітивних логічних елементів.
Об'єкт — елемент логічної схеми.
Для коректного складання логічної схеми із примітивних логічних елементів обов'язковими є правила:
Логічна схема у обчислювальній техніці і формальній математиці – це ланцюг зв’язанних логічних рішень і операцій, які називаються логічними елементами. Логічні схеми будуються відповідно до правил символічної логіки і мулевої алгебри.
На цій схемі маємо наступні логічні елементи:
якщо обидві сигнали однакові на виході маємо «1», якщо різні – «0»).
2. Відомості о Java
Java (вимовляється Джава; інколи — Ява) — об'єктно-орієнтована мова програмування, випущена компанією Sun Microsystems у 1995 році як основний компонент платформи Java. Зараз мовою займається компанія Oracle, яка придбала Sun Microsystems у 2009 році. Синтаксис мови багато в чому походить від C та C++. У офіційній реалізації, Java програми компілюються у байткод, який при виконанні інтерпретується віртуальною машиною для конкретної платформи.
Oracle надає компілятор Java та віртуальну машину Java, які задовольняють специфікації Java Community Process, під ліцезією GNU General Public License.
Мова значно запозичила синтаксис із C і C++. Зокрема, взято за основу об'єктну модель С++, проте її модифіковано. Усунуто можливість появи деяких конфліктних ситуацій, що могли виникнути через помилки програміста та полегшено сам процес розробки об'єктно-орієнтованих програм. Ряд дій, які в С/C++ повинні здійснювати програмісти, доручено віртуальній машині. Передусім, Java розроблялась як платформо-незалежна мова, тому вона має менше низькорівневих можливостей для роботи з апаратним забезпеченням. За необхідності таких дій java дозволяє викликати підпрограми, написані іншими мовами програмування.
Java вплинула на розвиток J++, що розроблялась компанією Microsoft. Роботу над J++ було зупинено через судовий позов компанії Sun Microsystems, оскільки ця мова програмування була модифікацією Java. Пізніше в новій платформі Microsoft .NET випустило J#, щоб полегшити міграцію програмістів J++ або Java на нову платформу. З часом нова мова програмування С#, стала основною мовою платформи, перейнявши багато чого з Java. J# востаннє включався в версію Microsoft Visual Studio 2005. Мова сценаріїв JavaScript має схожу із Java назву і синтаксис, але не пов'язана із Java.
3. Іднівідуальне завдання
У якості індівідуального завдання виступає наступна логічна схема:
На основі цієї схеми створен тестовий приклад роботи програми для перевірки правильності роботи програми. Малюнок результату роботи програми на основі вищевказаної схеми знаходиться у розділі тестування програми. Код програми знаходится у додатку 1. Код програми.
4. Інструкціі по експлуатаціі розробленої програми
Введення початкових даних для обчисленя:
Необхідно вводити або 1 або 0
Приклад додавання логичної операціі:
У поле «si» ввести ідентифікатор вхідного сигналу у форматі: «s*», де * - цифра від 1 до 6.
У поле «sj» ввести ідентифікатор вхідного сигналу у форматі: «s*», де * - цифра від 1 до 6.
У поле «do» ввести оператор операції яку необхідно здійснити з введеними елементами. Доступні наступні оператори: «^» «&&» «||» «!&» «!» «->», де:
У результуюче поле ввести назву елементу у котрий буде записан результат даної операціі. Цю назву далі можна застосовувати у інших операціях. Формат назви: «op:index», де op – літера латинского алфавиту в залежності від операціі що буде виконана, доступні наступні літери: X, A, O, D, N відповідно до операціі XOR, AND, OR, NAND, NOT, а index – порядковий номер элементу від 0 до 2147483647. Кожна група елементів має незалежну від іншої нумерацію.
5. Тестування роботи програми згідно з заданим варіантом
В якості входних данних
використовувалась
ЛІТЕРАТУРА
ВИСНОВКИ
Об'єктно-орієнтоване програмування є дуже зручним інструментом у програмуванні великих систем, тому що воно реалізує важливі властивості, такі як поліморфізм, успадкування та інкапсуляцію.
В даній курсовій роботі ми розробили програму, яка реалізує роботу логічної системи, яка складається з декількох логічних елементів (XOR, NAND, AND, OR і так далі). Програма була написана на мові Java та за допомогою ООП парадигми. Важливою перевагою застосування ООП парадигми є те, що ми отримали розширювану систему. Розширюваність позначає, що існуючу систему можна змусити працювати новими компонентами, без змін до керуючого коду.
Але серед негативних речей, ми можемо відмітити, що проектування класів — задача складніша, ніж їх використання. Проектування класу, як і проектування мови, вимагає багатого досвіду.
Додаток 1. Код програми
Класс котрий реалізує об’экт – елемент логичної схеми:
class Element {
static boolean mached=false;
String name;
Integer x1;
Integer y1;
Integer x2;
Integer y2;
Integer x3;
Integer y3;
public Element(String name, Integer x1, Integer y1, Integer x2, Integer y2, Integer x3, Integer y3) {
this.x1 = x1;
this.y1 = y1;
this.x2 = x2;
this.y2 = y2;
this.x3 = x3;
this.y3 = y3;
this.name=name;
}
}
Класс що реалізує графічне відображення схеми
import java.awt.Color;
import java.awt.Font;
import java.awt.Graphics;
import java.awt.Graphics2D;
import java.awt.Image;
import java.awt.event.MouseEvent;
import java.awt.event.
import java.util.ArrayList;
import java.util.Iterator;
import javax.swing.ImageIcon;
import javax.swing.JPanel;
public class GraphicsPanel extends JPanel {
boolean newgp;
ArrayList<Element> elements = new ArrayList<Element>();
Image icon = new ImageIcon("src\\res\\bg.jpg").
Element s1, s2, s3, s4, s5, s6;
Font font = new Font("theFont", Font.BOLD, 42);
public GraphicsPanel() {
newgp = true;
s1 = new Element("s1", 10, 100, 10, 100, 10, 100);
s2 = new Element("s2", 10, 200, 10, 200, 10, 200);
s3 = new Element("s3", 10, 300, 10, 300, 10, 300);
s4 = new Element("s4", 10, 400, 10, 400, 10, 400);
s5 = new Element("s5", 10, 500, 10, 500, 10, 500);
s6 = new Element("s6", 10, 600, 10, 600, 10, 600);
elements.add(s1);
elements.add(s2);
elements.add(s3);
elements.add(s4);
elements.add(s5);
elements.add(s6);
addMouseMotionListener(new MyPaintListenr());
}
@Override
public void paint(Graphics g) {
g = (Graphics2D) g;
g.drawImage(icon, 0, 0, null);
g.setFont(font);
for (Iterator<Element> it = elements.iterator(); it.hasNext();) {
Element element = it.next();
g.setColor(Color.DARK_GRAY);
g.drawString(element.name, element.x1, element.y1);
g.setColor(Color.RED);
System.out.println(element.x1 + " " + element.y1);
g.drawLine(element.x1, element.y1, element.x2, element.y2);
g.drawLine(element.x1, element.y1, element.x3, element.y3);
}
}
class MyPaintListenr implements MouseMotionListener {
public MyPaintListenr() {
}
@Override
public void mouseDragged(MouseEvent e) {
for (Iterator<Element> it = elements.iterator(); it.hasNext();) {
Element element = it.next();
if ((getMousePosition().x >= element.x1 - 30 && getMousePosition().x <= element.x1 + 60)
&& (getMousePosition().y >= element.y1 - 60 && getMousePosition().y <= element.y1 + 30) && !Element.mached) {
if (!element.name.equals("s1")
&& !element.name.equals("s2")
&& !element.name.equals("s3")
&& !element.name.equals("s4")
&& !element.name.equals("s5")
&& !element.name.equals("s6")) {
Element.mached = true;
element.x1 = getMousePosition().x;
element.y1 = getMousePosition().y;
}
}
continue;
}
repaint();
Element.mached = false;
}
@Override
public void mouseMoved(MouseEvent e) {
}
}
}
Класс що реалізує логіку роботи програми
import java.awt.Dimension;
import java.awt.HeadlessException;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.Box;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JTextField;
public class SchemaLogic extends JPanel {
//<editor-fold defaultstate="collapsed" desc="Fields">
static ArrayList<Boolean> elementListNot = new ArrayList<Boolean>();
static ArrayList<Boolean> elementListAnd = new ArrayList<Boolean>();
Информация о работе Об’єктно-орієнтована побудова логічних схем