Cum de a transfera date între clase

cu numărul de pe acest calculator, acesta nu arată o casetă de mesaj, dar arată numărul de pe ecranul său. Problema apare - avem nevoie pentru a obține acces la domeniul clasa metodei Calculator displayField actionPerformed (clasa CalculatorEngine). Acest lucru se poate face prin crearea unei clase în variabila CalculatorEngine pentru a stoca o trimitere la o instanță a unui calculator obiect.

În versiunea următoare, vom adăuga CalculatorEngine clasa constructor. Acest design este un argument de tip Calculator. Nu fi surprins de argumentele de metode pot fi de tipul de clase pe care le-ați creat!

JVM executa CalculatorEngine clasa constructor în timpul creării unui exemplu în memorie. Clasa Calculator creează CalculatorEngine, și le transmite constructorului o referire la ea însăși:

CalculatorEngine calcEngine = new CalculatorEngine (aceasta);

Aceste două linii au fost preluate din exemplul următor: java.awt.event.ActionListener import; import java.awt.event.ActionEvent; import javax.swing.JButton;

// constructor stochează o referință la fereastra Calculator

// variabila din clasa „părinte“ CalculatorEngine (Calculator părinte)

acest .parent = părinte;

public void actionPerformed (ActionEvent e)

// Obține sursa acțiunii curente

JButton clickedButton = (JButton) e.getSource ();

// Ia textul actual al câmpului de ieșire ( „display“)

String dispFieldText = parent.displayField.getText ();

// Ia eticheta butonul

String clickedButtonLabel = clickedButton.getText ();

Când declara o variabilă de a organiza o trimitere la o copie a - o clasă, această variabilă ar trebui să fie, sau de tipul de clasa sau tipul de una dintre superclasele sale.

Orice clasă în Java vine de la obiect de clasă, și dacă, de exemplu, clasa de pește - succesorul clasei Pet, atunci fiecare dintre aceste linii este corectă:

Peste myFish = new pește (); Pet myFish = new Fish ();

Object myFish = new pește ();

Finish calculator Să definim câteva reguli (cu algoritmul) pokotorym trebuie să lucreze calculatorul nostru:

1. În primul rând, utilizatorul introduce toate numerele prima chisla.2. Dacă utilizatorul face clic unele - unele dintre butoanele de operare aritmetică +, -. / Sau *. este necesar pentru a salva primul număr și acțiunea selectată în domeniile clasei și numărul de afișare de ștergere kalkulyatora.3. Apoi, utilizatorul introduce al doilea număr și prese knopkuravno. 4. converti o valoare șir de afișaj numeric în dublu, pentru a putea stoca numere fractionare mari. Și efectua operația aritmetică folosind activitatea selectată și primul număr stocat în pasul 2.

5. Afișarea rezultatul pasului 4 în afișajul calculatorului și sohraniteto valoare într-o variabilă care a fost utilizat în etapa 2.

import java.awt.event.ActionListener; import java.awt.event.ActionEvent; import javax.swing.JButton;

char selectedAction = ''; // +, -, /, sau *

double currentResult = 0;

// constructor stochează o referință la fereastra Calculator

// variabila de instanta

acest .parent = părinte;

public void actionPerformed (ActionEvent e)

// Obține sursa de acțiune

JButton clickedButton = (JButton) e.getSource (); String dispFieldText = parent.displayField.getText (); double displayValue = 0;

// obține numărul de afișare Calculator

// dacă nu este gol.

// Punctul de exclamație - este operatorul negație

Object src = e.getSource ();

// Pentru fiecare operațiune cheie aritmetică

// amintiți-l: +, -, /, *, sau, să păstreze numărul actual

// currentResult variabilă și afișaj clar

// pentru a introduce noul număr

if (src == parent.buttonPlus)

selectedAction = '+'; currentResult = displayValue; parent.displayField.setText ( "");

> Else if (src == parent.buttonMinus)

selectedAction = '-'; currentResult = displayValue; parent.displayField.setText ( "");

> Else if (src == parent.buttonDivide)

selectedAction = '/'; currentResult = displayValue; parent.displayField.setText ( "");

> Else if (src == parent.buttonMultiply)

selectedAction = '*'; currentResult = displayValue; parent.displayField.setText ( "");

> Else if (src == parent.buttonEqual)

// Ia-o operație matematică, în funcție

// din selectedAction, actualizați currentResult variabilă

// și arată rezultatul pe ecran

// converti rezultatul într-un șir de caractere, adăugându-l

// un șir gol și afișa

> Else if (selectedAction == '-')

> Else if (selectedAction == '/')

> Else if (selectedAction == '*')

// Pentru toate butoanele numerice pentru a atașa inscripția de pe

// buton pentru a afișa semne în

String clickedButtonLabel = clickedButton.getText ();

Versiunea finală a ferestrei Calculator kak-- va apărea?

Clasa Calculator face următoarele:

Creează și afișează toate componentele ferestrei. CalculatorEngine creează o instanță ascultător. CalculatorEngine trimite un link către sine. Înregistrează un ascultător al tuturor componentelor care creează evenimentul.

Aici este cea mai recentă versiune a clasei Calculator:

public class Calculator

// Declararea și inițializarea componente ale ferestrei

JButton button0 = new JButton ( "0"); JButton button1 = new JButton ( "1"); JButton BUTTON2 = new JButton ( "2");

JButton button3 = new JButton ( "3"); JButton button4 = new JButton ( "4"); JButton button5 = new JButton ( "5"); JButton Button6 = new JButton ( "6"); JButton button7 = new JButton ( "7"); JButton button8 = new JButton ( "8"); JButton button9 = new JButton ( "9"); JButton buttonPoint = new JButton ( ""); JButton buttonEqual = new JButton ( "=");

JButton buttonPlus = new JButton ( "+"); JButton buttonMinus = new JButton ( "-"); JButton buttonDivide = new JButton ( "/"); JButton buttonMultiply = new JButton ( "*");

JPanel windowContent = new JPanel (); JTextField displayField = new JTextField (30);

// Setați managerul de aspect pentru panoul

BorderLayout bl = new BorderLayout ();

// Adăugați afișajul la partea de sus

// Crearea unui panou cu layout manager GridLayout

// care va fi de 12 butoane - 10 cifre, și

// butonul „punct“ și „egal“

JPanel p1 = new JPanel ();

GridLayout gl = new GridLayout (4,3);

p1.setLayout (gl); p1.add (button1); p1.add (BUTTON2); p1.add (button3); p1.add (button4); p1.add (button5); p1.add (Button6); p1.add (button7); p1.add (button8); p1.add (button9); p1.add (button0);

P1 // adauga panou la centrul ferestrei

// Crearea unui panou cu layout manager GridLayout

// care va fi de 4 butoane -

// plus, minus, împărțire și înmulțire

JPanel p2 = new JPanel ();

GridLayout GL2 = new GridLayout (4,1);

p2.setLayout (GL2); p2.add (buttonPlus); p2.add (buttonMinus); p2.add (buttonMultiply); p2.add (buttonDivide);

P2 // Adauga panoul din partea dreapta a ferestrei

// Crearea unui cadru și adăugarea conținutului JFrame frame = new JFrame ( "Calculator");

// Setați dimensiunea ferestrei, astfel încât se potrivesc

// Creați o instanță a evenimentului și ascultător

// înregistrarea în fiecare buton

CalculatorEngine calcEngine = new CalculatorEngine (aceasta);

button0.addActionListener (calcEngine); button1.addActionListener (calcEngine); button2.addActionListener (calcEngine); button3.addActionListener (calcEngine); button4.addActionListener (calcEngine); button5.addActionListener (calcEngine); button6.addActionListener (calcEngine); button7.addActionListener (calcEngine); button8.addActionListener (calcEngine); button9.addActionListener (calcEngine);

buttonPoint.addActionListener (calcEngine); buttonPlus.addActionListener (calcEngine); buttonMinus.addActionListener (calcEngine); buttonDivide.addActionListener (calcEngine); buttonMultiply.addActionListener (calcEngine); buttonEqual.addActionListener (calcEngine);

statice void main (String [] args) publice

// Crearea unui exemplu de "Calculator" Calculator calco = new Calculator ();

Acum am compila proiectul și rulați Calculator de clasă. Acesta funcționează în același fel de mult ca și calculatoare reale. Felicitări! Acesta este primul program care poate fi util pentru mulți oameni - da prietenilor tăi.

Pentru a înțelege mai bine cum funcționează programul, am recomandăm să învețe să programe de depanare. Vă rugăm să consultați Anexa A cu privire la debugger Eclipse, si apoi continua lectura

Sursa: Programare Java pentru copii, părinți și bunici prin Yakov Fain