Реферат

Реферат Создание приложения на java

Работа добавлена на сайт bukvasha.net: 2015-10-28

Поможем написать учебную работу

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

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 9.11.2024



Министерство образования и науки РФ

Федеральное агентство по образованию

Государственное образовательное учреждение

Высшего профессионального образования

«Омский государственный технический университет»

Кафедра «Математические методы и информационные технологии в экономике»









Курсовой проект

по дисциплине

«Высокоуровневые методы программирования»


Выполнила ст.гр. ПИ-219

_______ М.Ю. Иванченко

«____»__________2011 г.

Приняла к.ф.м.н. доц.

М.В. Девятерикова

«____»__________2011 г.
Омск 2011

Оглавление

 3

Задание 4

 5

Описание классов 6

 10

Текст программы 11

 18

Вид приложения 18



Задание


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



Описание классов


Проект включает в себя четыре класса:

App.java;

Window.java;

EnterMatrix.java;

Matrix.java;

Класс App.java

Cодержит точку входа в программу. В качестве единственного параметра метод main() принимает массив строк args. В качестве параметра args методу main() передаются так называемые аргументы командной строки. Метод main() следит за управлением хода программы, поэтому App.java является управляющим классом.
Класс Window.java.

Класс является классом, который описывает графический интерфейс и обрабатывает пользовательское взаимодействие с GUI. Этот класс является наследником класса JFrame(). Конструктор JFrame() без параметров создает пустое окно.

В классе описаны следующие компоненты:

Два экземпляр класса EnterMatrix для ввода матриц;

панели для размещения кнопок на форме JPanel;

кнопки JButton;

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


Класс EnterMatrix содержит следующие поля:

TextField [][] tfArray (поля для ввода коэффициентов матрицы);

Класс включает в себя метод getArray():

модификатор−public;

тип возвращаемого значения−double[][] (двойной массив);

параметров нет;

Метод getArray () возвращает массив вещественных коэффициентов, которые вводятся с клавиатуры пользователем в поля для ввода tfArray.

Также в классе описан конструктор EnterArray. Он создает новые поля для ввода и размещает их на панели в виде матрицы.

Класс Matrix

Основной класс описывающий вещественную матрицу третьего порядка. Поля:

double[][] data – двумерный массив данных

Метод конструктор получает в качестве параметра двумерный массив данных.

Метод det

тип возвращаемого значения – double;

параметры отсутствуют;

Возвращает определитель матрицы.

Метод show

тип возвращаемого значения – void;

параметры отсутствуют;



Вызывает диалоговое окно, на котором представлена матрица

Метод transposition

тип возвращаемого значения – Matrix;

параметры отсутствуют;

Транспонирует матрицу, и возвращает новый объект Matrix соответствующий транспонированной матрице.

Метод multiply

статичный метод – модификатор static

тип возвращаемого значения – Matrix;

параметры Matrix a, Matrix b;

Статический метод перемножения двух матриц a и b. Возвращает новый объект Matrix соответствующий перемноженной матрице.


Метод Minor

тип возвращаемого значения – Matrix;

параметры int i, int j;

Метод возвращает минор элемента i,j (новый экземпляр класса Matrix).


Метод reserve

тип возвращаемого значения – Matrix;

параметров нет;

Метод возвращает обратную матрицу новый экземпляр класса Matrix.


Метод division

статичный метод – модификатор static

тип возвращаемого значения – Matrix;

параметры Matrix a, Matrix b;

Статический метод деления двух матриц a и b. Возвращает новый объект Matrix соответствующий разделенным матрицам (обратная матрица a умноженная на матрицу b).



Текст программы


Листинг 1. Класс App

public class App {

public static void main(String[] args) {

new Window();

}

}

Листинг 2. Класс Window

import java.awt.BorderLayout;

import java.awt.TextField;

import java.awt.event.ActionEvent;

import java.awt.event.ActionListener;

import javax.swing.Box;

import javax.swing.JButton;

import javax.swing.JFrame;

import javax.swing.JLabel;

import javax.swing.JOptionPane;

import javax.swing.JPanel;
public class Window extends JFrame{

EnterMatrix em = new EnterMatrix();

EnterMatrix em2 = new EnterMatrix();

JPanel panelMatrix = new JPanel();

JButton add = new JButton("Добавить матрицу");



Window(){

super("Работа с матрицей 3его порядка");

this.setVisible(true);



JPanel panelBtn = new JPanel();

panelMatrix.add(em,BorderLayout.WEST);





JButton det = new JButton("Определитель");

JButton reserve = new JButton("Обратная матрица");

JButton mult = new JButton("Умножить");

JButton div = new JButton("Поделить");

panelBtn.add(add);

panelBtn.add(det);

panelBtn.add(reserve);

panelBtn.add(mult);

panelBtn.add(div);



getContentPane().add(panelBtn,BorderLayout.NORTH);

getContentPane().add(panelMatrix);

pack();



add.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent arg0) {

if (add.getLabel()=="Добавить матрицу"){

add.setLabel(
"Убрать матрицу"
)
;

panelMatrix.add(em2,BorderLayout.EAST);

} else {

add.setLabel(
"Добавить матрицу"
)
;

panelMatrix.remove(em2);

}

pack();

}});





det.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e) {

JOptionPane.showMessageDialog(null,new Matrix(em.getArray()).det());

}

});



reserve.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e) {

Matrix m = new Matrix(em.getArray()).reverse();

if (m!=null){

m.show();

}else {

JOptionPane.showMessageDialog(null,"Определитель = 0");

}

}});



mult.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e) {

Matrix.multiply(new Matrix(em.getArray()), new Matrix(em2.getArray())).show();

}

});



div.addActionListener(new ActionListener(){

public void actionPerformed(ActionEvent e) {

Matrix.division(new Matrix(em.getArray()), new Matrix(em2.getArray())).show();

}

});



}

}

Листинг 3. Класс EnterMatrix

import java.awt.TextField;

import javax.swing.Box;

import javax.swing.JPanel;


public class EnterMatrix extends JPanel{

TextField[][] tfArray = new TextField[3][3];



EnterMatrix(){

Box panel = Box.createVerticalBox();

JPanel[] panel2 = new JPanel[3];

for (int i =0;i<3;i++){



panel2[i] = new JPanel();

for (int j =0;j<3;j++){

tfArray[i][j] = new TextField();

tfArray[i][j].setText("");

panel2[i].add(tfArray[i][j]);

}

panel.add(panel2[i]);

}

this.add(panel);

}



double[][] getArray(){

double[][] temp = new double[3][3];

for (int i =0;i<3;i++){

for (int j =0;j<3;j++){

if(tfArray[i][j].getText()==""){

temp[i][j] = 0.0;

}else {

temp[i][j] = Double.parseDouble(tfArray[i][j].getText());

}

}

}



return temp;

}

}

Листинг 4. Класс Matrix

import java.awt.TextField;

import javax.swing.Box;

import javax.swing.JLabel;

import javax.swing.JOptionPane;

public class Matrix {

private double[][] data ;



Matrix(double[][] a){

data = a;

}





double det (){

if (data.length == 3){

return data[0][0]*data[1][1]*data[2][2]+data[0][1]*data[1][2]*data[2][0]+data[1][0]*data[2][1]*data[0][2]-data[0][2]*data[1][1]*data[2][0]-data[0][0]*data[2][1]*data[1][2]-data[2][2]*data[1][0]*data[0][1];

} else if (data.length==2){

return data[0][0]*data[1][1]-data[0][1]*data[1][0];

}

return 0;

}



void show(){

Box panel = Box.createVerticalBox();

JLabel[] label = new JLabel[data.length];

for (int i =0 ; i

label[i] = new JLabel();

for (int j=0; j< data.length; j++){

System.out.println(i+" "+ j + " " +data[i][j]);

label[i].setText(label[i].getText()+" "+data[i][j]);

panel.add(label[i]);

}

}

JOptionPane.showMessageDialog(null,panel);



}



Matrix transposition(){

double [][] tempData = new double[3][3];



for (int i =0; i<3; i++){

for (int j =0; j<3; j++){

tempData[i][j]=data[j][i];

}

}



return new Matrix(tempData);

}



static Matrix multiply(Matrix a, Matrix b){

double [][] dataA = a.data;

double [][] dataB = b.data;

double [][] dataC = new double[3][3];



for (int i =0; i<3; i++){

for (int j =0; j<3; j++){

double s = 0;

for (int k = 0; k<3; k++){

s += dataA[i][k]*dataB[k][j];

}

dataC[i][j] = s;

}

}







return new Matrix(dataC);



}



Matrix minor(int i, int j){



double[][] tempData = new double[data.length-1][data.length-1];



int k=0;

int l=0;

for (int I=0;I<3;I++){

l=0;



for (int J=0;J<3;J++){

if (!((i==I) || (j==J))){

tempData[k][l] = data[I][J];

l++;

}

}

if (I!=i){k++;}

}





return new Matrix(tempData);



}





Matrix reverse(){

if (det()==0){

return null;

}

double[][] minorsData = new double[data.length][data.length];





for (int i =0; i

for (int j =0; j

if ((i+j)%2==0){

minorsData[i][j]=this.minor(i,j).det();

} else {

minorsData[i][j]=-this.minor(i,j).det();

}

}

}



Matrix m = new Matrix(minorsData).transposition();

double mDet = this.det();

double [][] mData = m.data;

for (int i =0; i

for (int j =0; j

mData[i][j]=mData[i][j]/mDet;

}

}

m = new Matrix(mData);





return m;

}



static Matrix division(Matrix a, Matrix b){

return Matrix.multiply(b.reverse(), a);

}



}



Вид приложения


Общий вид

Общий вид с добавленной второй матрицей
Результат перемножения матриц

18



1. Реферат Позитивный и нормативный методы экономики
2. Книга Организация самостоятельной работы с учебником в процесс обучения биологии
3. Реферат на тему Conrad Vs Holden Essay Research Paper Conrad
4. Статья Кельтские языки
5. Диплом Математическая модель системы слежения РЛС
6. Реферат Правовое регулирование политических конфликтов
7. Реферат на тему Отдельный медицинский батальон
8. Реферат Механизм практической реализации
9. Курсовая на тему Милтон Фридмен основатель монетаризма
10. Реферат Особенности инвестиций государственных облигаций