Об'єктно-орієнтований аналіз та проектування програмного забезпечення. Програмне забезпечення 'Цифровий диктофон'

  • Вид работы:
    Отчет по практике
  • Предмет:
    Информационное обеспечение, программирование
  • Язык:
    Украинский
    ,
    Формат файла:
    MS Word
    643,13 Кб
  • Опубликовано:
    2015-12-21
Вы можете узнать стоимость помощи в написании студенческой работы.
Помощь в написании работы, которую точно примут!

Об'єктно-орієнтований аналіз та проектування програмного забезпечення. Програмне забезпечення 'Цифровий диктофон'

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ

Черкаський політехнічний технікум






Звіт

з навчальної практики з дисципліни

«Конструювання програмного забезпечення»

на тему:

«Об`єктно-орієнтований аналіз та проектування програмного забезпечення. Програмне забезпечення «Цифровий диктофон»


Підготував

студент групи ПС 4-1

Рябокінь К.С.

Перевірив

Викладач

Мигаленко М. І.




Черкаси, 2015 р.

Тема: об'єктно-орієнтований аналіз і проектування програмного забезпечення. Програмне забезпечення кодового замка.

Мета: закріпити основні знання, отримані на заняттях з конструювання програмного забезпечення.

Теоретичні відомості

(Unified Modeling Language) - уніфікована мова моделювання, використовується у парадигмі об'єктно-орієнтованого програмування. Є невід'ємною частиною уніфікованого процесу розробки програмного забезпечення. UML є мовою широкого профілю, це відкритий стандарт, що використовує графічні позначення для створення абстрактної моделі системи, називаної UML-моделлю. UML був створений для визначення, візуалізації, проектування й документування в основному програмних систем. UML не є мовою програмування, але в засобах виконання UML-моделей як інтерпретованого коду можлива кодогенерація. В UML використовується 13 видів діаграм:

Структурні діаграми:

Класів <#"865010.files/image001.jpg">

Рисунок 1 - Діаграма варіантів використання

Діаграма взаємодії

Як правило, кожна окрема діаграмма взаємодії описує поведінку тільки в межах одного варіанта використання <#"865010.files/image002.jpg">

Рисунок 2 - Діаграма взаємодії

Діаграма класів

Дана діаграма відображає статичні елементи, такі як: класи <#"865010.files/image003.jpg">

Рисунок 3 - Діаграма класів

Діаграма станів

Діаграми станів застосовуються для того, щоб пояснити, яким чином працюють складні об'екти.Діаграма станів показує, як об'єкт переходить з одного стану в інший.

Рисунок 4 - Діаграма станів для класу DPhoneGUI

Діаграма компонентів

Діаграма компонентів дозволяє визначити архітектуру нашої системи, а також встановити залежності між програмними компонентами. Всього для побудови діаграми компонентів існує три основних підходи , я використав третій, зв’язавши компоненти залежністю.

Рисунок 5 - Діаграма компонентів.

Згенерований базовий лістинг

public class Sound

{static boolean pause = false;static boolean play = false;static long pauseLocation;static long soundTotalLength;static AudioStream audioStream;static AudioFormat format = getFormat();BufferedInputStream binStream;static InputStream in;()

{

} isPlaying()

{

}pauseSound()

{

}()

{

}

} class Capture

{sound;static File file;

// полное имя файлаstatic String soundFileName;

// основное имя файлаfinal static String filename;

// номер файлаFile temp;static int suffix = 0;final static AudioFileFormat.Type fileType;static boolean running, stopPl, stopCap;static ByteArrayOutputStream out, save;TargetDataLine line = null;()

{}()

{}()

{}()

{}()

{}()

{}

}class DPhoneGUI

{JButton choseFile;JCheckBoxMenuItem jCheckBoxMenuItem1;JLabel jLabel1;JLabel jLabel2;JLabel jLabel4;JButton playButton;JButton recButton;JButton stopButton;static void main(String args[])

{}

}

Лістинг програми

dPhone;java.io.BufferedInputStream;java.io.File;java.io.FileInputStream;java.io.FileNotFoundException;java.io.IOException;java.io.InputStream;java.util.logging.Level;java.util.logging.Logger;javax.sound.sampled.AudioFormat;javax.swing.JFrame;sun.audio.AudioPlayer;sun.audio.AudioStream;class Sound extends JFrame {static boolean play = false;static boolean pause = false;static long pauseLocation;static long soundTotalLength;static AudioStream audioStream;static AudioFormat format = getFormat();BufferedInputStream binStream;static InputStream in;AudioFormat getFormat() {sampleRate = 8000;sampleSizeInBits = 8;channels = 1;signed = true;bigEndian = true;new AudioFormat(sampleRate,, channels, signed, bigEndian);

}static boolean isPlaying() {(play) {true;

} else {false;

}

}static void playSound(final File url) throws FileNotFoundException, IOException {= true;

/*(pause) {

//in.skip(pauseLocation);= new FileInputStream(url);= new BufferedInputStream(in);= new AudioStream(in);.skip(soundTotalLength - pauseLocation);.player.start(audioStream);= false;

}{= false;

//soundTotalLength = in.available();= new BufferedInputStream(in);= new AudioStream(in);

//soundTotalLength = audioStream.available();.player.start(audioStream);

}static void pauseSound() {= true;(isPlaying()) {.player.stop(audioStream);{= audioStream.available();

} //AudioPlayer.player.start(audioStream);(IOException ex) {.err.println("I/O problems. File problem: ");.exit(-47);

}

}

}static void stopSound() {.player.stop(audioStream);

}

}dPhone;java.awt.*;java.awt.event.*;java.io.*;javax.sound.sampled.*;javax.swing.*;static javax.swing.JFrame.EXIT_ON_CLOSE;dPhone.Sound;java.util.logging.Level;java.util.logging.Logger;class Capture extends Sound {sound;static File file;

// полное имя файлаstatic String soundFileName;

// основное имя файлаfinal static String filename = "audio_";

// номер файлаFile temp;static int suffix = 0;final static AudioFileFormat.Type fileType = AudioFileFormat.Type.WAVE;static boolean running, stopPl, stopCap;static ByteArrayOutputStream out, save;TargetDataLine line = null;void captureAudio() {{AudioFormat format = Sound.getFormat();.Info info;= new DataLine.Info(.class, format);= null;= (TargetDataLine) AudioSystem.getLine(info);.open(format);.start();= false;= true;runner;= new Runnable() {bufferSize = (int) format.getSampleRate()

* format.getFrameSize();buffer[] = new byte[bufferSize];

@Overridevoid run() {= new ByteArrayOutputStream();= true;{(running) {count = line.read(buffer, 0, buffer.length);(count > 0) {.write(buffer, 0, count);

}

}.close();

} catch (IOException e) {.err.println("I/O problems: " + e);.exit(-1);

}

}

};captureThread = new Thread(runner);.start();

} catch (LineUnavailableException e) {.err.println("Line unavailable: " + e);.exit(-2);

}

}void stopAudio() {= out;.stop();.close();

}static void chooseFile() {ch = new JFileChooser();.showOpenDialog(null);= ch.getSelectedFile();

//String filePath = chFile.getAbsolutePath();

}File getNewFile() {{{

// новое название файла= filename + (suffix++)

+ "." + fileType.getExtension();= new File(soundFileName);

} while (!file.createNewFile());

} catch (IOException ex) {.exit(-11);

}file;

}void saveAudio() {

//save = out;{audio[] = save.toByteArray();input = new ByteArrayInputStream(audio);AudioFormat format = getFormat();ais = new AudioInputStream(input, format,.length / format.getFrameSize());.write(ais, fileType, temp);.close();

} catch (IOException e) {.err.println("I/O problems: " + e);.exit(-3);

}

}void playAudio() {{= true;= false;.playSound(temp);

} catch (IOException ex) {.err.println("I/O problems. File not found. File problem: ");.exit(-44);

}

}

}dPhone;

/*

* To change this license header, choose License Headers in Project Properties.

* To change this template file, choose Tools | Templates

* and open the template in the editor.

*/static dPhone.Capture.chooseFile;java.io.File;

//package dPhone;

/**

*

* @author Костя

*/class DPhoneGUI extends javax.swing.JFrame {

/**

* Creates new form DPhone

*/DPhoneGUI() {();

}

/**

* This method is called from within the constructor to initialize the form.

* WARNING: Do NOT modify this code. The content of this method is always

* regenerated by the Form Editor.

*/

@SuppressWarnings("unchecked")

// <editor-fold defaultstate="collapsed" desc="Generated Code"> void initComponents() {= new javax.swing.JCheckBoxMenuItem();= new javax.swing.JLabel();= new javax.swing.JLabel();= new javax.swing.JButton();= new javax.swing.JButton();= new javax.swing.JButton();= new javax.swing.JButton();= new javax.swing.JLabel();.setSelected(true);.setText("jCheckBoxMenuItem1");.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/images.jpg"))); // NOI18N.setText("jLabel1");.setText("jLabel4");(javax.swing.WindowConstants.EXIT_ON_CLOSE);().setLayout(null);.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/rec.png"))); // NOI18N.addActionListener(new java.awt.event.ActionListener() {void actionPerformed(java.awt.event.ActionEvent evt) {(evt);

}

});().add(recButton);.setBounds(110, 240, 110, 120);.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/stop.png"))); // NOI18N.addActionListener(new java.awt.event.ActionListener() {void actionPerformed(java.awt.event.ActionEvent evt) {(evt);

}

});().add(stopButton);.setBounds(220, 240, 110, 120);.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/chose file.png"))); // NOI18N.addActionListener(new java.awt.event.ActionListener() {void actionPerformed(java.awt.event.ActionEvent evt) {(evt);

}

});().add(choseFile);.setBounds(220, 90, 110, 120);.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/play.png"))); // NOI18N.addActionListener(new java.awt.event.ActionListener() {void actionPerformed(java.awt.event.ActionEvent evt) {(evt);

}

});().add(playButton);.setBounds(330, 240, 110, 120);.setIcon(new javax.swing.ImageIcon(getClass().getResource("/images/Alien Ink 2560X1600 Abstract Background.jpg"))); // NOI18N.setBorder(javax.swing.BorderFactory.createLineBorder(new java.awt.Color(0, 0, 0)));().add(jLabel2);.setBounds(0, 0, 570, 380);();

}// </editor-fold> void playButtonActionPerformed(java.awt.event.ActionEvent evt) { .playAudio();

} void stopButtonActionPerformed(java.awt.event.ActionEvent evt) {

// TODO add your handling code here:.running = false;(Capture.line.isRunning() && !Capture.stopCap && Capture.stopPl) {.stopAudio();

}(Capture.isPlaying() && Capture.stopCap && !Capture.stopPl) {.stopSound();

}rec = new Capture();f = rec.getNewFile();.temp = f;.saveAudio();

} void choseFileButtonActionPerformed(java.awt.event.ActionEvent evt) {

// TODO add your handling code here:.chooseFile();

}

/**

* @param args the command line arguments

*/static void main(String args[]) {

/* Set the Nimbus look and feel */

//<editor-fold defaultstate="collapsed" desc=" Look and feel setting code (optional) ">

/* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel.

* For details see #"865010.files/image006.jpg">

Рисунок 6. Головне вікно програми

діаграма диктофон програмний

Висновок

На даній навчальній практиці були поглиблені знання з використання StarUML та з розробки діаграм у даному середовищі. Зокрема, були створені наступні діаграми: варіантів використання, взаємодії, класів, станів та компонентів. Також були отримані навички з генерування коду на основі створених діаграм за допомогою StarUML. Код був згенерований на обєктно-орієнтовній мові програмування Java. Діаграми створювались на основі програмної системи «Цифровий диктофон», код якої приведений у звіті разом із згенерованим у StarUML кодом.

Похожие работы на - Об'єктно-орієнтований аналіз та проектування програмного забезпечення. Програмне забезпечення 'Цифровий диктофон'

 

Не нашли материал для своей работы?
Поможем написать уникальную работу
Без плагиата!