1. Obyek lan kelas

Dina iki sampeyan bakal sinau sethithik babagan cara kerja program Jawa sing khas. Iki warta gedhe: saben program Jawa dumadi saka kelas lan obyek.

Sampeyan wis ngerti apa kelas, nanging apa obyek?

Aku bakal miwiti karo analogi. Mbayangno sampeyan pengin nggawe kapal cilik. Pisanan sampeyan kudu nggawe cithak biru banjur menehi menyang pabrik, ing ngendi kapal bakal dibangun miturut cithak biru kasebut. Utawa mbok menawa rolas. Utawa akeh kapal sing sampeyan seneng. Welasan kapal sing padha dibangun miturut cithak biru siji. Sing penting kene.

Iku padha ing pemrograman Java.

cithak biru

Programmer kaya desainer. Desainer nggawe cithak biru, lan programmer Java nulis kelas. Bagean digawe adhedhasar cetak biru, lan obyek digawe adhedhasar kelas.

Kaping pisanan, kita nulis kelas (nggawe blueprints), banjur, nalika program mlaku, mesin Java nggawe obyek adhedhasar kelas kasebut. Kanthi cara sing padha, kapal digawe saka cetak biru.

Mung ana siji cithak biru, nanging bisa uga akeh kapal. Kapal kasebut béda-béda - duwe jeneng sing beda-beda lan nggawa kargo sing beda. Nanging padha banget: kabeh padha duwe desain sing padha lan bisa nindakake tugas sing padha.

Utawa ana analogi liyane ...

Semut

Anthill minangka conto sing apik babagan interaksi obyek. Ana telung kelas semut ing semut sing prasaja: ratu, prajurit, lan buruh.

Jumlah semut saben kelas beda-beda. Ana ratu siji kanggo kabeh semut, nanging ana puluhan prajurit, lan atusan semut buruh. Telung kelas lan atusan obyek. Semut sesambungan karo siji liyane - karo semut saka kelas sing padha lan karo semut saka kelas liyane - miturut aturan sing kaku.

Iki minangka conto sing sampurna. Kabeh persis kaya iki ing program khas. Ana obyek utama sing nggawe obyek kabeh kelas liyane. Obyek wiwit sesambungan karo saben liyane lan karo program "njaba donya". Prilaku obyek kasebut kanthi hardcoded internal.

Iki loro analogi loro-lorone saka duwit receh padha. Bebener ana ing tengah. Conto pisanan (babagan cithak biru lan kapal) nuduhake hubungan antarane kelas lan obyek saka kelas kasebut. Iki minangka analogi sing kuat. Conto kapindho (bab anthill) nuduhake hubungan antarane kelas ditulis lan obyek sing ana minangka program mlaku.

Sampeyan kudu nulis kelas pisanan kanggo saben obyek sing bakal ana ing program, lan banjur uga njlèntrèhaké carane padha sesambungan. Ya bener, nanging luwih gampang tinimbang sing dikira.

Ing Jawa, kabeh entitas minangka obyek nalika runtime, lan nulis program yaiku babagan njlèntrèhaké cara sing béda-béda kanggo interaksi obyek. Obyek mung nelpon cara saben liyane lan ngirim data sing dibutuhake kanggo wong-wong mau.

Dokumentasi

Lan kepiye sampeyan ngerti data apa sing kudu diterusake menyang metode? Wong sing teka sadurunge sampeyan mikir kabeh.

Saben kelas biasane duwe katrangan sing nyatakake apa sing digawe. Uga, saben cara umum biasane duwe katrangan sing nuduhake apa sing ditindakake lan data apa sing kudu diterusake.

Kanggo nggunakake kelas, sampeyan kudu duwe idea umum apa iku. Lan sampeyan kudu ngerti persis apa sing ditindakake saben metode. Nanging sampeyan ora perlu ngerti carane nindakake. Iku kaya tongkat sihir.

Ayo goleki kode kanggo nyalin file:

Nyalin file c:\\data.txt menyang file c:\\result.txt
package com.codegym.lesson2;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;

public class FileCopy
{
   public static void main(String[] args) throws IOException
   {
      FileInputStream fileInputStream = new FileInputStream("c:\\data.txt");
      FileOutputStream fileOutputStream = new FileOutputStream("c:\\result.txt");

      while (fileInputStream.available() > 0)
      {
         int data = fileInputStream.read();
         fileOutputStream.write(data);
      }

      fileInputStream.close();
      fileOutputStream.close();
   }
}

Yen maca kode iki baris dening baris, sampeyan bisa guess apa iku ing istilah umum. Sanajan mbutuhake pengalaman lan latihan. Sawise sawetara wektu, kode iki bakal katon akrab lan bisa dingerteni kanggo sampeyan.


2. Ngrancang program

Desain program minangka seni kabeh. Iku bebarengan prasaja lan angel. Prasaja, amarga ora ana hukum sing ketat: apa wae sing ora dilarang diidini. Ya, lan iku uga sing nggawe angel: ana akeh cara kanggo nindakake apa wae lan ora gampang golek sing paling apik.

Ngrancang program kaya nulis buku. Ing tangan siji, sampeyan mung nulis aksara, tembung, lan ukara. Ing sisih liya, plot, paraga, kontradiksi internal, konflik, gaya crita, intrik, lsp.

Sing utama yaiku ngerti sapa sing nulis kode kasebut. Lan sampeyan nulis kode kanggo programer liyane .

Pangembangan produk mesthi tegese nggawe owah-owahan: ana sing ditambahake ing kene, ana sing dicopot ing kana, ana sing didesain ulang. Semono uga proyek gedhe, gedhe banget lan gedhe banget lair saka iterasi cilik.

Sing paling penting kanggo kode yaiku kudu dimangerteni dening programer liyane. Kode sing salah sing bisa dingerteni bisa didandani. Kode sing bener nanging ora bisa dingerteni ora bisa didandani.  Sampeyan mung bisa mbuwang.

Dadi kepiye carane nulis kode sing apik lan resik?

Kanggo nindakake iki mbutuhake telung perkara:

  • Nulis kode sing apik lan bisa dingerteni ing njero metode - iki minangka syarat sing paling gampang
  • Nemtokake entitas sing kudu dilebokake ing program kasebut
  • Pisah program menyang bagean logis kanthi bener

Apa konco konsep iki?

Nulis kode apik nang cara

Yen sampeyan duwe katrampilan basa Inggris dhasar, sampeyan bisa uga ngerteni sepira gampang maca kode minangka ukara basa Inggris:

  • class Cat extends Pet- Iki tegese kelas Cat ngluwihi kelas Pet
  • while(stream.ready())- Mumpung stream siap...
  • if (a<b) return a; else return b- yen akurang saka b, banjur bali a, yen ora bali b.

Iki sengaja. Jawa iku salah siji saka pirang-pirang basa sing nggampangake nulis kode dhiri, yaiku kode sing bisa dingerteni tanpa komentar. Ing kode Jawa sing apik, akeh cara maca kaya ukara basa Inggris.

Nalika nulis kode, tugas sampeyan supaya gampang lan ringkes. Coba pikirake apa kode sampeyan gampang diwaca lan sampeyan bakal miwiti pindhah menyang arah sing bener.

Ing Jawa lumrahe nulis kode kang gampang diwaca. Luwih becik, kabeh kode kanggo cara bakal pas ing layar siji (IE 20-30 baris). Iki minangka pranatan kanggo kabeh masyarakat Jawa. Yen kode bisa ditingkatake, mesthine kudu ditingkatake.

Cara paling apik kanggo sinau nulis kode sing apik yaiku kanthi latihan. Tulis akeh kode, sinau kode wong liya, lan takon kolega sing luwih berpengalaman kanggo mriksa kode sampeyan.

Lan elinga yen nalika sampeyan ngandhani dhewe "ninggalake kanthi becik", wutah sampeyan mandheg.

Nemtokake entitas sing kudu dilebokake ing program kasebut

Sampeyan kudu nulis kode sing bisa dimangerteni dening programer liyane. Yen 9 saka 10 programer kalebu kelas A, B lan C ing desain program, sampeyan uga kudu nggawe kelas A, B, lan C ing program sampeyan. Sampeyan kudu nulis kode sing bisa dingerteni wong liya.

Great, bisa, cepet, nanging kode non-standar kode ala.

Sampeyan kudu nyinaoni proyek wong liya: iki minangka cara sing paling apik, paling cepet lan paling gampang kanggo ngrampungake kabeh kawicaksanan sing wis diklumpukake ing industri IT sajrone pirang-pirang dekade.

Kajaba iku, sampeyan wis duwe akses menyang proyek sing apik banget, populer, lan didokumentasikake kanthi apik - Java SDK . Mulai karo.

Analisa kelas lan carane diatur. Coba pikirake kenapa sawetara metode statis lan liyane ora. Napa metode kasebut duwe paramèter tartamtu nanging ora ana liyane. Napa metode kasebut persis, lan kenapa kelas kasebut dijenengi apa sing dijenengi, lan kenapa ana ing paket tartamtu.

Sawise sampeyan wiwit ngerti jawaban kanggo kabeh pitakonan kasebut, sampeyan bakal bisa nulis kode sing bisa dingerteni wong liya.

Ngandika, aku pengin ngelingake sampeyan supaya ora nganalisis kode ing metode Java SDK. Akeh cara sing ditulis maneh kanggo nggedhekake kacepetan, lan keterbacaan bisa dipertanyakan.

Pisah program menyang bagean logis kanthi bener

Saklawasé saben program dipérang dadi bagéan utawa modul. Saben bagean tanggung jawab kanggo aspek program kasebut.

Komputer nduweni motherboard, monitor, lan keyboard - kabeh iki minangka bagean sing kapisah lan digandhengake. Apa maneh, padha sesambungan kanthi cara standar: USB, HDMI, lsp. Yen sampeyan numpahake kopi ing keyboard, sampeyan mung bisa ngumbah ing sink, supaya garing, banjur terus nggunakake.

Nanging laptop minangka conto arsitektur monolitik: misale jek kita bisa mbedakake bagean logis sing kapisah, nanging luwih terpadu. Ing MacBookPro, sampeyan kudu mbongkar setengah saka laptop kanggo ngresiki keyboard. Lan tumpah kopi ing laptop minangka alasan kanggo pesen laptop anyar. Ora secangkir kopi anyar.


3. Nggawe kelas dhewe

Nanging amarga sampeyan lagi sinau program, sampeyan kudu miwiti cilik kanthi sinau nggawe kelas sampeyan dhewe.

Mesthi wae, sampeyan wis nggawe kelas, nanging sampeyan kudu sinau ngerti kelas apa sing kudu dilebokake ing program, kepiye jenenge, lan metode apa sing kudu diduweni. Lan carane kudu sesambungan karo saben liyane.

Dhaptar entitas

Yen sampeyan ora ngerti ngendi arep miwiti, miwiti saka awal.

Nalika sampeyan miwiti ngrancang program, sampeyan mung bisa njupuk selembar kertas lan nulis dhaptar entitas (obyek) sing kudu ana ing program kasebut. Banjur tulis kode miturut prinsip sing saben entitas minangka kelas sing kapisah.

Tuladha

Contone, sampeyan pengin nulis game catur. Sampeyan mbutuhake entitas ing ngisor iki: papan catur lan 6 jinis potongan catur. Potongan kasebut pindhah kanthi cara sing beda-beda lan nduweni nilai sing beda. Iku ndadekake pangertèn sing padha kelas kapisah. Pancen, nalika sampeyan miwiti, luwih akeh kelas, luwih apik.

Arang banget ketemu programmer anyar sing nulis sepuluh kelas tinimbang loro. Tinimbang nulis sepuluh kelas, pemula seneng nulis rong kelas utawa mung siji. Dadi mangga nulis kelas liyane, kanca-kanca programer. Lan kode sampeyan bakal dadi luwih jelas kanggo kabeh wong kajaba sampeyan 😛

Catur

Contone, kita mutusake kanggo nulis kelas catur: kaya apa kelas kasebut?

Apa papan catur mung array 8 karo 8? Iku luwih apik kanggo nggawe kelas kapisah sing internal nyimpen referensi kanggo Uploaded. Banjur sampeyan bisa nambah akeh cara sing migunani ing kelas "papan catur", contone, kanggo mriksa apa sel tartamtu kosong utawa dikuwasani.

Umumé, nalika sampeyan miwiti, tansah dipandu dening prinsip iki: Program duwe macem-macem entitas, lan entitas duwe jinis. Jenis iki minangka kelas.


4. Variabel lan metode statis

Uga aja lali nggunakake variabel statis lan metode. Yen sampeyan duwe catur siji sing sesambungan karo liyane ing papan catur, kode sampeyan mbutuhake metode sing njupuk referensi menyang potongan pisanan lan kaloro uga papan catur.

Variabel statis, sing bisa diakses saka ngendi wae ing program, biasane digunakake kanggo ngindhari referensi kanggo obyek sing "tansah ana".

Contone, kaya iki:

Kode Cathetan
public class ChessBoard
{
   public static ChessBoard board = new ChessBoard();
   public ChessItem[][] cells = new ChessItem[8][8];
   ...
}

public class Game
{
   public static void main(String[] args)
   {
      var board = ChessBoard.board;
      board.cells[0][3] = new King(Color.WHITE);
      board.cells[0][4] = new Queen(Color.WHITE);
      ...
   }
}


A referensi kanggo obyek siji ChessBoard.
Array loro-dimensi 8x8, dudu variabel statis.








Tambahake potongan menyang papan.

Utawa tinimbang variabel statis, sampeyan bisa nggawe cara sing ngasilake obyek tunggal. Contone, kaya iki:

public class ChessBoard
{
   private static ChessBoard board = new ChessBoard();
   public static ChessBoard getBoard()
   {
      return board;
   }

   public ChessItem[][] cells = new ChessItem[8][8];
   ...
}

public class Game
{
   public static void main(String[] args)
   {
      var board = ChessBoard.getBoard();
      board.cells[0][3] = new King(Color.WHITE);
      board.cells[0][4] = new Queen(Color.WHITE);
      ...
   }
}