Parimet e Programimit Në Java: Struktura e Komponenteve: Ndërtimi I Metodave Dhe Klasave

You might also like

Download as pdf or txt
Download as pdf or txt
You are on page 1of 71

Struktura e komponenteve: Ndrtimi i metodave dhe klasave

Struktura e komponenteve: Ndertimi i metodave dhe klasave fq. 1

Struktura e komponenteve: Ndrtimi i metodave dhe klasave


Objektivat: T shkruhen metoda publike dhe private t cilat marrin argumente (parametra) dhe kthejn rezultate.

Struktura e komponenteve: Ndertimi i metodave dhe klasave fq. 2

Struktura e komponenteve: Ndrtimi i metodave dhe klasave


Objektivat: T shkruhen metoda publike dhe private t cilat marrin argumente (parametra) dhe kthejn rezultate. T shkruhen klasa q prmbajn metoda t cilat rishfrytzohen srish.

Struktura e komponenteve: Ndertimi i metodave dhe klasave fq. 2

Struktura e komponenteve: Ndrtimi i metodave dhe klasave


Objektivat: T shkruhen metoda publike dhe private t cilat marrin argumente (parametra) dhe kthejn rezultate. T shkruhen klasa q prmbajn metoda t cilat rishfrytzohen srish. T lexohen dhe shkruhen specikime interfejsash, t cilat prshkruajn sjelljet e klasave dhe metodave t tyre.

Struktura e komponenteve: Ndertimi i metodave dhe klasave fq. 2

Metodat
Metod: varg i emrtuar urdhrash; i destinuar pr kryerjen e nj detyre ose prgjegjsie specike.

public class MyApplication { public static void main(String[] args) { // ... Instruksionet t cilat ekzekutohen // me startimin e aplikacionit } }

Struktura e komponenteve: Ndertimi i metodave dhe klasave fq. 3

Metodat Vazhdim
import java.awt.*; import javax.swing.*; public class MyPanel extends JPanel { public MyPanel() { // ... Instruksionet pr konstruktimin dhe inicializimin // e panelit } public void paintComponent(Graphics g) { // ... Instruksionet pr vizatim n panelin } }

Struktura e komponenteve: Ndertimi i metodave dhe klasave fq. 4

Metodat publike

System.out.println("TEKSTI");

Struktura e komponenteve: Ndertimi i metodave dhe klasave fq. 5

Metodat publike

System.out.println("TEKSTI");

Invokim metode: drgim mesazhi i cili prfshin emrin e metods. Mesazhi krkon q objekti pranues t ekzekutoj metodn e emrtuar n mesazhin.

Struktura e komponenteve: Ndertimi i metodave dhe klasave fq. 5

Metodat publike

System.out.println("TEKSTI");

Invokim metode: drgim mesazhi i cili prfshin emrin e metods. Mesazhi krkon q objekti pranues t ekzekutoj metodn e emrtuar n mesazhin. Klient: objekti i cili drgon mesazh (invokim).

Struktura e komponenteve: Ndertimi i metodave dhe klasave fq. 5

Metodat publike

System.out.println("TEKSTI");

Invokim metode: drgim mesazhi i cili prfshin emrin e metods. Mesazhi krkon q objekti pranues t ekzekutoj metodn e emrtuar n mesazhin. Klient: objekti i cili drgon mesazh (invokim). Pranues: objekti i cili pranon mesazh; ekzekuton metodn e emrtuar n mesazhin.

Struktura e komponenteve: Ndertimi i metodave dhe klasave fq. 5

Metodat publike Vazhdim

public void paintComponent(Graphics g) // kjo sht ballina { URDHRAT // ky sht trupi }

Prnga sintaksa, metoda prbhet nga ballina (header line) dhe trupi.

Struktura e komponenteve: Ndertimi i metodave dhe klasave fq. 6

Metodat publike Vazhdim

public void paintComponent(Graphics g) // kjo sht ballina { URDHRAT // ky sht trupi }

Prnga sintaksa, metoda prbhet nga ballina (header line) dhe trupi. Metoda publike i sht n dispozicion publikut gjeneral, prfshir sistemin operativ t kompjuterit si dhe objekte t krijuara nga klas tjera.

Struktura e komponenteve: Ndertimi i metodave dhe klasave fq. 6

Ca metoda publike themelore

/** Vizaton ASCII art. */ public class AsciiArtWriter { /** Konstruktori */ public AsciiArtWriter() { System.out.println(); } /** Afishon nj blet. */ public void printBee() { System.out.println(" ,-."); System.out.println(" \\_/"); // \\ pr \ System.out.println(">{|||}-"); System.out.println(" / \\"); System.out.println(" -^"); System.out.println(); }

Struktura e komponenteve: Ndertimi i metodave dhe klasave fq. 7

Ca metoda publike themelore Vazhdim


/** Afishon nj flutur. */ public void printButterfly() { System.out.println(" _ \" _"); // \" pr " System.out.println(" (_\\|/_)"); System.out.println(" (/|\\)"); System.out.println(); } /** Afishon nj kalikuese. */ public void printLadybug() { System.out.println(" m\"); System.out.println(" (|)"); System.out.println(); } }

// \ pr

Struktura e komponenteve: Ndertimi i metodave dhe klasave fq. 8

Ca metoda publike themelore Vazhdim


/** Ca Ascii art. */ public class DrawArt { public static void main(String[] args) { AsciiArtWriter writer = new AsciiArtWriter(); writer.printBee(); System.out.println("Test"); writer.printLadybug(); writer.printButterfly(); } }

Struktura e komponenteve: Ndertimi i metodave dhe klasave fq. 9

Ca metoda publike themelore Vazhdim


Specikim metode: koment i lluar me /** i cili dokumenton qllimin ose sjelljen e nj metode. Specikimet mund t prpunohen me vegln javadoc pr t gjeneruar nj dokumentacion kodi.

Struktura e komponenteve: Ndertimi i metodave dhe klasave fq. 10

Metodat konstruktor
Konstruktor: metod prbrenda klass e cila invokohet automatikisht kur t konstruktohet nj objekt n memorien qendrore t kompjuterit.

AsciiArtWriter writer = new AsciiArtWriter();

Struktura e komponenteve: Ndertimi i metodave dhe klasave fq. 11

Metodat konstruktor Vazhdim

DrawArt
main { 1> AsciiArtWriter writer = new AsciiArtWriter(); ... }

Struktura e komponenteve: Ndertimi i metodave dhe klasave fq. 12

Metodat konstruktor Vazhdim

DrawArt
main { AsciiArtWriter writer == 1> writer = PRIT ... } ? ;

a1 : AsciiArtWriter
AsciiArtWriter() { 2> System.out.println(); } public void printBee() {...} public void printButterfly() {...} public void printLadybug() {...}

Struktura e komponenteve: Ndertimi i metodave dhe klasave fq. 13

Metodat konstruktor Vazhdim

DrawArt
main { AsciiArtWriter writer == 1> writer = a1 ... } ? ;

a1 : AsciiArtWriter
public void printBee() {...} public void printButterfly() {...} public void printLadybug() {...}

Struktura e komponenteve: Ndertimi i metodave dhe klasave fq. 14

Metodat konstruktor Vazhdim

DrawArt
main { AsciiArtWriter writer == ... 1> writer.printBee(); ... } a1 ;

a1 : AsciiArtWriter
public void printBee() {...} public void printButterfly() {...} public void printLadybug() {...}

Struktura e komponenteve: Ndertimi i metodave dhe klasave fq. 15

Metodat konstruktor Vazhdim

DrawArt
main { AsciiArtWriter writer == ... 1> PRIT ... } a1 ;

a1 : AsciiArtWriter
public void printBee() { 2> System.out.println(...); ... } public void printButterfly() {...} public void printLadybug() {...}

Struktura e komponenteve: Ndertimi i metodave dhe klasave fq. 16

Metodat konstruktor Vazhdim

DrawArt
main { AsciiArtWriter writer == a1 ; ... 1> System.out.println("Test"); ... }

a1 : AsciiArtWriter
public void printBee() {...} public void printButterfly() {...} public void printLadybug() {...}

Struktura e komponenteve: Ndertimi i metodave dhe klasave fq. 17

Parametrat e metodave
Parametrat aktual: argumentet lista e t cilve jepet s bashku me emrin e metods gjat invokimit t metods, p.sh.,
System.out.println("TEKSTI");

Struktura e komponenteve: Ndertimi i metodave dhe klasave fq. 18

Parametrat e metodave Vazhdim


Parametrat formal: emrat e variablave lista e t cilave jepet n ballinn e metods.
/** Afishon nj blet me emr. * @param name emri i blets */ public void printBeeWithName(String name) { System.out.println(" ,-."); System.out.println(" \\_/"); System.out.println(">{|||}-" + name + "-"); System.out.println(" / \\"); System.out.println(" -^"); System.out.println(); }

Struktura e komponenteve: Ndertimi i metodave dhe klasave fq. 19

Parametrat e metodave Vazhdim


Kur metoda invokohet parametrat aktual u shoqrohen parametrave formal prkats ashtu q parametri formal inicializohet me parametrin aktual. Lidhja e nj parametri aktual me nj parametr formal funksionon sikur nj inicializim i nj variableje lokale.
AsciiArtWriter writer = new AsciiArtWriter(); String s = "Tringa"; writer.printBeeWithName(s); writer.printBeeWithName("Filane " + "Fisteku");

Struktura e komponenteve: Ndertimi i metodave dhe klasave fq. 20

Parametrat e metodave Vazhdim

DrawArt
main { AsciiArtWriter writer == a1 ; String s == "Tringa" ; 1> writer.printBeeWithName(s); ... }

a1 : AsciiArtWriter
public public public public void void void void printBee() {...} printButterfly() {...} printLadybug() {...} printBeeWithName(String name) {...}

Struktura e komponenteve: Ndertimi i metodave dhe klasave fq. 21

Parametrat e metodave Vazhdim

DrawArt
main { AsciiArtWriter writer == a1 ; String s == "Tringa" ; 1> writer.printBeeWithName("Tringa"); ... }

a1 : AsciiArtWriter
public public public public void void void void printBee() {...} printButterfly() {...} printLadybug() {...} printBeeWithName(String name) {...}

Struktura e komponenteve: Ndertimi i metodave dhe klasave fq. 22

Parametrat e metodave Vazhdim


DrawArt
main { AsciiArtWriter writer == String s == 1> PRIT ... } "Tringa" ; a1 ;

... public void printBeeWithName { 2> String name = "Tringa"; System.out.println(...); ... } ...

a1 : AsciiArtWriter

Struktura e komponenteve: Ndertimi i metodave dhe klasave fq. 23

Parametrat e metodave Vazhdim


DrawArt
main { AsciiArtWriter writer == String s == 1> PRIT ... } "Tringa" ; a1 ;

... public void printBeeWithName { String name == "Tringa" 2> System.out.println(...); ... } ...

a1 : AsciiArtWriter

Struktura e komponenteve: Ndertimi i metodave dhe klasave fq. 24

Format e parametrave

do vler e cila mund ti shoqrohet (ndahet pr vler) nj variableje mund t jet parametr aktual. Parametri aktual duhet t jet kompatibil me parametrin formal.

Struktura e komponenteve: Ndertimi i metodave dhe klasave fq. 25

Format e parametrave Vazhdim

import java.text.*; /** Kryen operacione matematike. */ public class MathOperations { /** Afishon numrin invers t nj numri t plot * t formatizuar n tri vende decimale. * @param i numri i plot i cili invertohet */ public void printInverse(int i) { DecimalFormat formatter = new DecimalFormat("0.000"); double d = 1.0 / i; String s = formatter.format(d); System.out.println(s); } }

Struktura e komponenteve: Ndertimi i metodave dhe klasave fq. 26

Format e parametrave Vazhdim


Invokimi i printInverse bhet, p.sh., me
MathOperations calculator = new MathOperations(); calculator.printInverse(3);

Struktura e komponenteve: Ndertimi i metodave dhe klasave fq. 27

Format e parametrave Vazhdim


Invokimi i printInverse bhet, p.sh., me
MathOperations calculator = new MathOperations(); calculator.printInverse(3);

Invokim jokorrekt: calculator.printInverse(0.5).

Struktura e komponenteve: Ndertimi i metodave dhe klasave fq. 27

Format e parametrave Vazhdim


Invokimi i printInverse bhet, p.sh., me
MathOperations calculator = new MathOperations(); calculator.printInverse(3);

Invokim jokorrekt: calculator.printInverse(0.5). Pr printInverse t shkruar me ballinn


public void printInverse(double i)

korrekte do t ishin t dy invokimet vijuese:


calculator.printInverse(0.5); calculator.printInverse(3);

Struktura e komponenteve: Ndertimi i metodave dhe klasave fq. 27

Format e parametrave Vazhdim

/** Afishon numrin invers t nj numri t plot. * @param i numri i plot i cili invertohet * @param pattern shablloni pr formatizimin e rezultatit */ public void printInverse(int i, String pattern) { DecimalFormat formatter = new DecimalFormat(pattern); double d = 1.0 / i; String s = formatter.format(d); System.out.println(s); }

Struktura e komponenteve: Ndertimi i metodave dhe klasave fq. 28

Format e parametrave Vazhdim

MathOperations calculator = new MathOperations(); calculator.printInverse(3, "0.00000"); calculator.printInverse(5, "0.0");

Struktura e komponenteve: Ndertimi i metodave dhe klasave fq. 29

Format e parametrave Vazhdim

MathOperations calculator = new MathOperations(); calculator.printInverse(3, "0.00000"); calculator.printInverse(5, "0.0");

Shoqrimi i parametrave aktual parametrave formal prcaktohet nga renditja n list e parametrave aktual parametrat aktual u shoqrohen parametrave formal me radh.

Struktura e komponenteve: Ndertimi i metodave dhe klasave fq. 29

Format e parametrave Vazhdim

/** Afishon numrin invers t nj numri t plot. * @param i numri i plot i cili invertohet * @param f objekti i cili formatizon rezultatin */ public void printInverse(int i, DecimalFormat f) { double d = 1.0 / i; String s = f.format(d); System.out.println(s); }

Struktura e komponenteve: Ndertimi i metodave dhe klasave fq. 30

Format e parametrave Vazhdim


Invokimi i metods s tret:
DecimalFormat fivePlaces = new DecimalFormat("0.00000"); calculator.printInverse(3, fivePlaces);

Struktura e komponenteve: Ndertimi i metodave dhe klasave fq. 31

Format e parametrave Vazhdim

Metodat konstruktor mund t shfrytzojn parametra formal njsoj sikurse metodat tjera publike. Metoda ballina e s cils ka formn
public void EMRI_I_METODS()

sht metod me zero parametra formal dhe duhet t invokohet nga urdhr i cili ka zero parametra aktual:
OBJEKTI_PRANUES.EMRI_I_METODS();

Struktura e komponenteve: Ndertimi i metodave dhe klasave fq. 32

Case study: korniz dalse me destinim t prgjithshm

Specikim interfejsi (interfejs): list emrash dhe prgjegjsish t metodave publike t nj klase.
MyWriter krijon dritare grake e cila ashon nj fjali

Konstruktori:
MyWriter(int w, int h)

Konstrukton dritaren me gjersi dhe lartsi t specikuar

Metodat:
writeSentnce(String s) repositionSentence(int x, int y)

Ashon fjalin n dritaren grake Riashon fjalin n pozitn e re

Tabela 1. Specikimi i interfejsit te kornizes dalese MyWriter

Struktura e komponenteve: Ndertimi i metodave dhe klasave fq. 33

Case study: korniz dalse me destinim t prgjithshm Vazhdim

import javax.swing.*; import java.awt.*; /** Krijon dritare grafike e cila afishon nj fjali. */ public class MyWriter extends JPanel { private int width; private int height; private String sentence = ""; private int xPosition; private int yPosition;

Struktura e komponenteve: Ndertimi i metodave dhe klasave fq. 34

Case study: korniz dalse me destinim t prgjithshm Vazhdim

/** Konstruktor: krijon panelin. * @param w gjersia e dritares * @param h lartsia e dritares */ public MyWriter(int w, int h) { width = w; height = h; xPosition = width / 5; yPosition = height / 2; JFrame myFrame = new JFrame(); myFrame.getContentPane().add(this); myFrame.setTitle("Shkruesi im"); myFrame.setSize(width, height); myFrame.setVisible(true); }

Struktura e komponenteve: Ndertimi i metodave dhe klasave fq. 35

Case study: korniz dalse me destinim t prgjithshm Vazhdim

/** Vizaton panelin. * @param g penda grafike */ public void paintComponent(Graphics g) { g.setColor(Color.white); g.fillRect(0, 0, width, height); g.setColor(Color.red); g.drawString(sentence, xPosition, yPosition); }

Struktura e komponenteve: Ndertimi i metodave dhe klasave fq. 36

Case study: korniz dalse me destinim t prgjithshm Vazhdim

/** Afishon nj fjali. * @param s fjalia q afishohet */ public void writeSentence(String s) { sentence = s; this.repaint(); } /** Riafishon fjalin n pozitn e re. * @param x pozita e re horizontale * @param y pozita e re vertikale */ public void repositionSentence(int x, int y) { xPosition = x; yPosition = y; this.repaint(); } }

Struktura e komponenteve: Ndertimi i metodave dhe klasave fq. 37

Case study: korniz dalse me destinim t prgjithshm Vazhdim

import javax.swing.*; /** Afishon n dritare grafike nj fjali t futur. */ public class MyWriterTest { public static void main(String args) { int width = 300; int height = 200; MyWriter writer = new MyWriter(width, height); writer.repositionSentence(50, 80); String s = JOptionPane.showInputDialog("Rradhisni ca tekst:"); writer.writeSentence(s); } }

Struktura e komponenteve: Ndertimi i metodave dhe klasave fq. 38

Case study: korniz dalse me destinim t prgjithshm Vazhdim

1. Disenjuam dhe shkruam nj klas e cila mund t shfrytzohet si komponent e shum aplikacioneve. 2. Disenjuam nj specikim interfejsi i cili na ndihmoi ta shkruajm klasn. 3. Shfrytzuesit e klass mund ta lexojn specikim e klass pr t kuptuar se si ti shfrytzojn metodat e klass; nuk ka nevoj pr ta lexuar kodimin e klass. 4. Kodimi shfrytzoi konstruktor dhe fusha private pr t ndihmuar metodat publike t sillen n mnyr korrekte; metodat publike invokuan njra tjetrn sipas nevojs.

Struktura e komponenteve: Ndertimi i metodave dhe klasave fq. 39

Case study: korniz dalse me destinim t prgjithshm Vazhdim

Kur nj aplikacion ndrtohet nga disa njerz, sht m leht pr njerzit ve e ve t shkruajn dhe testojn pjest e aplikacionit n qoft se aplikacioni ndahet n klas. N qoft se nj pjes aplikacioni duhet srish t shkruhet ose t zvendsohet, sht m leht pr tu br n qoft se pjesa sht nj klas e veant.

Struktura e komponenteve: Ndertimi i metodave dhe klasave fq. 40

Rezultatet e metodave: Funksionet


Kur nj objekt klient drgon mesazh, ndonjher klienti pret prgjegjje kthyese, p.sh.,
String input = JOptionPane.showInputDialog("Grad Fahrenheit:"); int f = new Integer(input).intValue();

Struktura e komponenteve: Ndertimi i metodave dhe klasave fq. 41

Rezultatet e metodave: Funksionet


Kur nj objekt klient drgon mesazh, ndonjher klienti pret prgjegjje kthyese, p.sh.,
String input = JOptionPane.showInputDialog("Grad Fahrenheit:"); int f = new Integer(input).intValue();

Rezultat metode: prgjegjje e llogaritur nga metoda dhe e kthyer klientit.

Struktura e komponenteve: Ndertimi i metodave dhe klasave fq. 41

Rezultatet e metodave: Funksionet


Kur nj objekt klient drgon mesazh, ndonjher klienti pret prgjegjje kthyese, p.sh.,
String input = JOptionPane.showInputDialog("Grad Fahrenheit:"); int f = new Integer(input).intValue();

Rezultat metode: prgjegjje e llogaritur nga metoda dhe e kthyer klientit. Funksion: metod e cila kthen rezultat.

Struktura e komponenteve: Ndertimi i metodave dhe klasave fq. 41

Rezultatet e metodave: Funksionet Vazhdim


/** Konverton vlera temperaturash. */ public class TemperatureConvertor { /** Konverton vlern e dhn. * @param f shkallt Fahrenheit * @return ekuivalenti n shkall Celsius */ public double fahrenheitToCelsius(double f) { double c = (5.0/9.0) * (f - 32); return c; } }

Struktura e komponenteve: Ndertimi i metodave dhe klasave fq. 42

Rezultatet e metodave: Funksionet Vazhdim


Teknika pr kthimin e rezultatit: N ballinn e metods zvendsohet fjala kye void me tipin e t dhnave t rezultatit t cilin duhet ta kthej metoda. Fjala kye void do t thot mos kthe fare rezultat. N fund t trupit t metods vhet urdhr
return SH;

ku shprehja SH llogarit vlern e cila do t kthehet.

Struktura e komponenteve: Ndertimi i metodave dhe klasave fq. 43

Rezultatet e metodave: Funksionet Vazhdim


import javax.swing.*; /** ConvertorTest teston konvertorin e temperaturave */ public class ConvertorTest { public static void main(String args) { String input = JOptionPane.showInputDialog("Grad Fahrenheit:"); int f = new Integer(input).intValue(); TemperatureConvertor convert = new TemperatureConvertor(); double c = convert.fahrenheitToCelsius(f); MyWriter writer = new MyWriter(300, 200); writer.writeSentence(f + " Fahrenheit jan " + c + " Celsius"); } }

Struktura e komponenteve: Ndertimi i metodave dhe klasave fq. 44

Rezultatet e metodave: Funksionet Vazhdim


Urdhri return sht pik daljeje nga funksioni. P.sh., funksioni vijues llogarit n mnyr jokorrekte katrorin e nj numri:
public int square(int num) { int result = 0; return result; result = num * num; }

Struktura e komponenteve: Ndertimi i metodave dhe klasave fq. 45

Rezultatet e metodave: Funksionet Vazhdim

ConvertorTest
main { int f == 14 1> TemperatureConvertor convert = new TemperatureConvertor(); double c = convert.fahrenheitToCelsius(f); ... }

Struktura e komponenteve: Ndertimi i metodave dhe klasave fq. 46

Rezultatet e metodave: Funksionet Vazhdim

ConvertorTest
main { int f == 14 TemperatureConvertor convert == a1 1> double c = convert.fahrenheitToCelsius(f); ... }

a1 : TemperatureConvertor
public double fahrenheitToCelsius(double f) {...}

Struktura e komponenteve: Ndertimi i metodave dhe klasave fq. 47

Rezultatet e metodave: Funksionet Vazhdim


ConvertorTest
main { int f == 14 a1 TemperatureConvertor convert == double c == ? 1> c = PRIT; ... }

a1 : TemperatureConvertor
fahrenheitToCelsius { double f == 14 double c == -10.0 2> return c; }

Struktura e komponenteve: Ndertimi i metodave dhe klasave fq. 48

Rezultatet e metodave: Funksionet Vazhdim

ConvertorTest
main { int f == 14 a1 TemperatureConvertor convert == double c == ? 1> c = -10.0; ... }

a1 : TemperatureConvertor
public double fahrenheitToCelsius(double f) {...}

Struktura e komponenteve: Ndertimi i metodave dhe klasave fq. 49

Rezultatet e metodave: Funksionet Vazhdim


Rezultati i nj funksioni mund t injorohet, p.sh., n class FahrenheitToCelsiusWriter kemi pasur
/** main: pr testim */ public static void main(String args) { new FahrenheitToCelsiusWriter(); }

Struktura e komponenteve: Ndertimi i metodave dhe klasave fq. 50

Metodat private
Metodat private mund t invokohen vetm prbrenda klass n t cil paraqiten.

Struktura e komponenteve: Ndertimi i metodave dhe klasave fq. 51

Metodat private
Metodat private mund t invokohen vetm prbrenda klass n t cil paraqiten. Metoda private shkruhen si zgjidhje n dy situata: 1. Kur ka prsritje t nj detyre. 2. Kur nj formul ose nnalgoritm fundamental meriton t ket emr t vetin.

Struktura e komponenteve: Ndertimi i metodave dhe klasave fq. 51

Emrtimi i nj nnalgoritmi me metod private

Algoritmi pr paraqitjen e dritares grake me ku t kaltr e qendr t bardh: 1. Ngjyros tr dritaren n t kaltr. 2. Llogarit madhsin e nj drejtkndshi t madhsis ca m t vogl sesa tr dritarja. 3. Ngjyros drejtkndshin n t bardh.

Struktura e komponenteve: Ndertimi i metodave dhe klasave fq. 52

Emrtimi i nj nnalgoritmi me metod private Vazhdim

/** Vizaton panelin. * @param g penda grafike */ public void paintComponent(Graphics g) { makeBorder(g); g.setColor(Color.red); g.drawString(sentence, xPosition, yPosition); } /** Ngjyros kufirin e kornizs. * @param pen penda grafike */ private void makeBorder(Graphics pen) { pen.setColor(Color.blue); pen.fillRect(0, 0, width, height); int borderSize = 20; int rectWidth = width - 2 * borderSize; int rectHeight = height - 2 * borderSize; pen.setColor(Color.white); pen.fillRect(borderSize, borderSize, rectWidth, rectHeight); }

Struktura e komponenteve: Ndertimi i metodave dhe klasave fq. 53

Prsritja e nj aktiviteti me metod private


Algoritmi pr ngjyrosjen e nj veje: 1. Llogarit lartsin e ves si 2/3 e gjersis s saj. 2. Llogarit skajin e majt t ves ashtu q veja t jet e qendrsuar n dritaren, dhe llogarit skajin e siprm t ves. 3. Ngjyros ven. 4. Kthe vlern e skajit t siprm, n rast nevoje q mpastaj t vendoset nj tjetr ve prmbi.

Struktura e komponenteve: Ndertimi i metodave dhe klasave fq. 54

Prsritja e nj aktiviteti me metod private Vazhdim

import javax.swing.*; import java.awt.*; /** Vizaton tri ve t renditura. */ public class StackedEggWriter extends JPanel { private int frameWidth; private int frameHeight; private int egg1Size; private int egg2Size; private int egg3Size;

Struktura e komponenteve: Ndertimi i metodave dhe klasave fq. 55

Prsritja e nj aktiviteti me metod private Vazhdim

/** Konstruktori. * @param width gjersia e panelit * @param height lartsia e panelit * @param size1 gjersia e ves s poshtme * @param size2 gjersia e ves s mesme * @param size3 gjersia e ves s siprme */ public StackedEggWriter(int width, int height, int size1, int size2, int size3) { frameWidth = width; frameHeight = height; egg1Size = size1; egg2Size = size2; egg3Size = size3; JFrame myFrame = new JFrame(); myFrame.getContentPane().add(this); myFrame.setTitle("Mullar vezsh"); myFrame.setBackground(Color.yellow); myFrame.setSize(frameWidth, frameHeight); myFrame.setVisible(true); }

Struktura e komponenteve: Ndertimi i metodave dhe klasave fq. 56

Prsritja e nj aktiviteti me metod private Vazhdim

/** Mbush dritaren me vez. * @param g penda grafike */ public void paintComponent(Graphics g) { int egg1Top = paintAnEgg(frameHeight, egg1Size, g); int egg2Top = paintAnEgg(egg1Top, egg2Size, g); paintAnEgg(egg2Top, egg3Size, g); }

Struktura e komponenteve: Ndertimi i metodave dhe klasave fq. 57

Prsritja e nj aktiviteti me metod private Vazhdim

/** Vizaton nj ve. * @param bottom pozita e skajit t poshtm * @param width pozita e skajit t poshtm * @param pen penda grafike * @return y pozita e skajit t siprm */ private int paintAnEgg(int bottom, int width, Graphics pen) { int height = 2 * width / 3; int top = bottom - height; int left = (frameWidth - width) / 2; pen.setColor(Color.pink); pen.fillOval(left, top, width, height); pen.setColor(Color.black); pen.drawOval(left, top, width, height); return top; }

Struktura e komponenteve: Ndertimi i metodave dhe klasave fq. 58

Prsritja e nj aktiviteti me metod private Vazhdim

/** main pr testim */ public static void main(String args) { int width = 300; int height = 200; new StackedEggWriter(width, height, 140, 90, 50); } }

Struktura e komponenteve: Ndertimi i metodave dhe klasave fq. 59

You might also like