Git Product home page Git Product logo

task_4-1's Introduction

Task_4

Exercise on Inner Class and Threading

Buatlah program java untuk chatting antar computer sebagai berikut

Package javaChat


Package berisi kelas-kelas Socket dan Network Programming [disediakan]

Package consoleApp


Package berisi kelas-kelas model

ConnectionThread.java

Buatlah class ConnectionThread.java sebagai berikut

  • extends Thread
  • import library berikut
    ![01] (/asset/01.JPG)
  • buatlah class sesuai class diagram berikut
    ![02] (/asset/02.JPG)

Constructor

  • Constructor throws IOException
  • Constructor mengeset attribut client dan menginstansiasi objek Connection dengan input client
    ![03] (/asset/03.JPG)

method run()

  • Merupakan method yang dijalankan saat thread diaktifkan
  • Thread akan aktif setiap ada Client baru yang terhubung ke Server
  • Thread akan berhenti ketika Client mengirimkan pesan "quit"
  • lakukan proses berikut dalam blok try-catch
  • jalankan proses chatting dengan memanggil method startChat(String) dari objek connection
    ![04] (/asset/04.JPG)
  • tampilkan informasi Client yang terhubung dengan method getClientInformation dari Objek connection
    ![05] (/asset/05.JPG)
  • lakukan proses loop membaca inputan text dari client dengan memanggil method readStream() dari objek connection selama input readStream masih membaca dan input String bukanlah "quit"
  • tampilkan pesan yang diterima dari client, dan kirimkan (broadcast) pesat tersebut ke client yang lain menggunakan method sendToAll() dari objek connection
    ![06] (/asset/06.JPG)
  • tampilkan pesan kepada semua client jika ada client yang keluar dari chat room, kemudian putuskan koneksi terhadap client tsb dengan memanggil method disconnect() dari object connection
    ![07] (/asset/07.JPG)
  • tambahkan pesan di blok catch untuk menampilkan pesan error

ConsoleApplication.java

Buatlah class ConsoleApplication.java sebagai berikut

  • buatlah class sesuai class diagram berikut
    ![08] (/asset/08.JPG)
  • class ReadInput dan WriteOutput merupakan Inner Class

inner class ReadInput

  • extends Thread
  • method run()
  • lakukan proses berikut dalam blok try-catch
  • Thread akan membaca input keyboard dari client dengan memanggil method inputString()
  • Mengirimkan hasil input keyboard ke server melalui method writeStream() selama input dari client bukanlah kata "quit"
    ![09] (/asset/09.JPG)
  • tambahkan pesan di blok catch untuk menampilkan pesan error

inner class WriteOutput

  • extends Thread
  • method run()
  • lakukan proses berikut dalam blok try-catch
  • Thread akan menerima pesan yang dikirimkan dari server melalui method readStream()
  • Menampilkan ke layar selama pesan dari server masih ada (bukan null)
    ![10] (/asset/10.JPG)
  • tambahkan pesan di blok catch untuk menampilkan pesan error

method startChat()

  • lakukan proses berikut dalam blok try-catch
  • Instansiasi objek ClientConnection
    ![11] (/asset/11.JPG)
  • Minta input alamat ip Server menggunakan method inputString()
  • Koneksikan ip client ke server dengan memanggil method connect(ip)
    ![12] (/asset/12.JPG)
  • Instansiasi dan jalankan Thread ReadInput dan WriteInput
    ![13] (/asset/13.JPG)
  • tambahkan pesan di blok catch untuk menampilkan pesan error

Package chatGUI


Package berisi kelas view GUI dan controller

ChatView.java

Buatlah class JFrame ChatView.java dengan tampilan sebagai berikut
![16] (/asset/16.JPG)

  • terdapat sebuah text area (txAreaChat)
  • set editable text area = false (uncheck editable)
  • tambahkan text "Input Server IP Address : " pada text area
    ![17] (/asset/17.JPG)
  • terdapat sebuah text field (txFieldChat)
  • tambahkan method getTxFieldChat() yang mengembalikan objek text field txFieldChat
  • tambahkan method getStringChat() yang mengembalikan String dari text field txFieldChat
  • tambahkan method setTxFieldChat(String) yang mengeset String pada text field txFieldChat
  • tambahkan method setTxAreaChat(String) yang menambahkan string pada baris baru pada text area txAreaChat
    ![18] (/asset/18.JPG)
  • import java.awt.event.ActionListener;
  • tambahkan method addListener(ActionListener e)
  • tambahkan add listener dengan memanggil method addActionListener pada text field txfieldChat
    ![19] (/asset/19.JPG)

ChatController.java

Buatlah class JChatController.java sebagai berikut

  • buatlah class sesuai class diagram berikut
    ![20] (/asset/20.JPG)
  • class WriteOutput merupakan Inner Class
  • import java.awt.event.ActionListener;
  • kelas implements ActionListener
  • implementasikan method actionPerformed(ActionEvent ae)

Constructor ChatController

  • Constructor menginstansiasi GUI view
  • set visible view = true
  • set lisener view dengan controller this
  • set client = null
    ![21] (/asset/21.JPG)

inner class WriteOutput

  • extends Thread
  • method run()
  • lakukan proses berikut dalam blok try-catch
  • Thread akan menerima pesan yang dikirimkan dari server melalui method readStream()
  • Menampilkan pesan ke text area view selama pesan dari server masih ada (bukan null) menggunakan method setTxAreaChat
    ![23] (/asset/23.JPG)
  • tambahkan pesan di blok catch untuk menampilkan pesan error

method actionPerformed(ActionEvent ae)

  • get Object source action event
    ![22] (/asset/22.JPG)
  • cek source action event
  • jika event berasal dari text field (tekan tombol enter di text field), cek apakah client sudah terhubung
  • jika client masih null
  • lakukan proses berikut dalam blok try-catch
  • instansiasi ClientConnection baru
  • Terima string ip dari user dengan memanggil method getStringChat dari objek view
    ![24] (/asset/24.JPG)
  • Instansiasi dan jalankan objek WriteOutput
    ![25] (/asset/25.JPG)
  • tambahkan pesan di blok catch untuk menampilkan pesan error
  • jika client sudah terbentuk (koneksi sudah terbentuk)
  • terima input dari view menggunakan method getStringChat()
  • kirimkan hasil input String ke server melalui method writeStream()
    ![26] (/asset/26.JPG)
  • hapus isi dari text field pada view menggunakan method setTxFieldChat
    ![27] (/asset/27.JPG)

Package driver


Package berisi kelas-kelas model

DriverServer.java

Buatlah class DriverServer.java sebagai berikut

  • kelas memiliki main method (psvm)
  • lakukan proses berikut dalam blok try-catch di dalam main method
  • Instansiasi objek ServerConnection dan tampilkan informasi server dengan memanggil method getServerInformation()
    ![14] (/asset/14.JPG)
  • Lakukan perulangan untuk menjalankan ConnectionThread setiap server menerima Client baru
  • Jalankan thread connection
    ![15] (/asset/15.JPG)
  • tambahkan pesan di blok catch untuk menampilkan pesan error
  • Jalankan kelas DriverServer

DriverClientConsole.java

Buatlah class DriverClient.java sebagai berikut

  • kelas memiliki main method (psvm)
  • instansiasi objek ConsoleApplication
  • panggil method startChat dari objek ConsoleApplication
  • Jalankan kelas DriverClientConsole
  • hubungkan dengan IP server
  • cobalah aplikasi chat console yang telah dibuat

DriverClientGui.java

Buatlah class DriverClientGui.java sebagai berikut

  • kelas memiliki main method (psvm)
  • instansiasi objek ChatController
  • Jalankan kelas DriverClientGui
  • hubungkan dengan IP server
  • cobalah aplikasi chat Gui yang telah dibuat

task_4-1's People

Contributors

adf-telkomuniv avatar undeed avatar akbarm23 avatar

Watchers

 avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.