Bölüm 4 Sınıflar ve Metotlar

Slides:



Advertisements
Benzer bir sunumlar
Programlama-II (Java ile Bilgisayar Programlama)
Advertisements

Java Programlama Giriş/Çıkış
Saatte V km hız ile giden bir aracın t zamanda aldığı yolu bulan metodu yazınız. Metodu kullanacak bir program yazınız. ( yol=hız*zaman, x=V*t) — Metot.
C# - Metotlar.
SCANNER SINIFI ve KLAVYEDEN VERİ OKUNMASI
Değişkenler ve bellek Değişkenler
JavaScript Birinci Hafta.
SINIFLAR Yılmaz Kılıçaslan.
NESNEYE YÖNELİK PROGRAMLAMA SINIFLAR
Programlama-II (Java ile Bilgisayar Programlama)
EDUTIME Java Day 4 Serdar TÜRKEL.
Javascript Oğuz İNAL.
SQL de Değişken Tanımlama
BPR152 ALGORİTMA VE PROGRAMLAMA - II
PROGRAMLAMA DİLLERİNE GİRİŞ Ders 4: Diziler
Bölüm 10 Yapılar ve Birleşimler
PROGRAMLAMA DİLLERİNE GİRİŞ Ders 6: Sınıflar
Nesneye Yönelik Programlama Dr. Pelin GÖRGEL
BPR152 ALGORİTMA VE PROGRAMLAMA - II
Diziler.
NESNEYE YÖNELİK PROGRAMLAMA
DİZİLER.
BPR152 ALGORİTMA VE PROGRAMLAMA - II
DELEGATE OOP-UYG.
Erişim Denetimi, Fonksiyon
NESNE TABANLI PROGRAMLAMA -METOTLAR-
Önemli noktalar Paradigma Nesnelere Giriş Mesajlar / Ara bağlantılar
METODLAR.
C# Metot Overloading (Aşırı yükleme)
Sorular? Öneriler?. Referanslar Referanslar (Tekrar) Eğer aşağıdaki gibi yazarsak ne olur: int x; double y; char c; ???
JAVADA PROGRAM DENET İ M İ VE OPERATÖRLER. int a ; a=4 ; // do ğ ru bir atama 4=a ; // yanlış bir atama!
JAVA İ LE PROGRAMLAMAYA G İ R İ Ş Ekim Dr. Galip Aydın.
SQL de Değişken Tanımlama
C#.NET 5.0 C# .NET 5.0 Eğitimleri Volkan KANAT.
C++ Temelleri C++ genel amaçlı, nesne tabanlı, yüksek seviye programlama dilidir.
C#.NET 5.0 C# .NET 5.0 Eğitimleri Volkan KANAT.
Java Sınıf ve Nesne Kavramı UML Gösterimi
Nesneye Dayalı Programlama
Ses Kontrol Metodlar ile ilgili son birkaç söz Tekrar: Programlama için başlıca 3 model.
Metotlar.
JAVA İLE PROGRAMLAMAYA GİRİŞ
METOTLAR.
ÇOK BİÇİMLİLİK POLYMORPHISM
Önceki Dersi Hatırlama !!
METODLAR Esra SARI.
JAVA’DA DÖNGÜLER.
NESNEYE YÖNELİK PROGRAMLAMA
Kalıtım , Sınıf Asli Ergün.
Demet AYDIN METODLAR Demet AYDIN
Fonksiyonlar Fonksiyon Tanımı Değer Döndürmeyen Fonksiyonlar
Fonksiyonlar Fonksiyon Tanımı
Class KahveFincani { public KahveFincani() { System.out.println("KahveFincani..."); } } public class YapilandirciBasitOrnek { public static void main(String[]
JAVA’DA DİZİLER Dr.Galip AYDIN.
Sınıflar ve Nesneler Sınıf: bir nesnenin şablonunu, kalıbını, şeklini, davranışını, kalıtımını değişkenleri, metodları ve ebeveynleri vasıtasıyla tanımlar.
Trees, Vectors, Iterators. ADT Abstract Data Type (ADT) vs implementation -Soyut Veri Türleri - Uygulamaları.
Bölüm 5 Nesneler ve Metotlar
Bölüm 6 Fonksiyonlar Fonksiyon Tanımı Değer Döndürmeyen Fonksiyonlar
Bil 102 Bölüm 6 Diziler.
Bil 102 Bölüm 3 Java’da Program Akış Denetimi Bil 1021.
Bilgisayar programlarının en büyük avantajı, kullanıcının işini kolaylaştırmalarıdır. Her bilgisayar programı bunu değişik metotlar kullanarak sağlar.
JAVA PROGRAMLAMA ORNEKLER
Görsel C# ile Windows Programlama
SINIFLAR ve NESNELER. İlk sınıfımızı ekleyelim class KrediHesap { public ulong HesapNo; public double Limit; public string KartSahibi; }
PROGRAMLAMA DİLLERİNE GİRİŞ Ders 4: Diziler
Nesne Tabanlı Programlama ve Metotlar
İbrahim Olgaç PROGRAMLAMA DİLLERİ SUNUMU C#
JAVA’DA DİZİLER. Özet  Dizi: belirli sayıda ve aynı veri türünden de ğ işkenlere aynı adla erişilmesini sa ğ layan bir yapıdır.  Dizilerde döngü işlemleri.
Kurucular(Yapıcılar), Yıkıcılar
Nesneye Dayalı Programlama 1
MTM216 GÖRSEL PROGRAMLAMA
Sunum transkripti:

Bölüm 4 Sınıflar ve Metotlar Bil 102 Bölüm 4 Sınıflar ve Metotlar Bil 102

Sınıf ve Metot Tanımları Nesnesel diller yazılım projelerini daha kolay yönetilir, programları daha kolay okunur yapmak, gelişime ve değiştirilmeye daha uygun olmalarını sağlamak üzere geliştirilmiştir. Programlar nesnelerin tanımı (sınıflar) ve nesnelerin işlenmeleri (metotlar) çerçevesinde oluşturulur. (1) Nesnelerin ortak özellikleri sınıf yapıları kullanılarak tanımlanır (class). (2) Bu yapılar içinde nesne özellikleri (alanlar) ve nesneleri işleyen metotlar tanımlanır. (3) Tanımlı sınıflar kullanılarak nesneler oluşturulur ve bu nesnelerle problemler çözülür. Bil 102

Sınıflar ve Metotlar Nesneler (object) -- etrafımızda bulunan herşey Sınıf (class) -- aynı cins nesnelerin genel tanımı Kitap sınıfı fizik kitabı, java kitabi, matematik kitabi (her biri ayrı birer nesne) Aynı sınıfa ait nesneler ortak özelliklere sahiptir fakat bu özellikler herbir nesne için farklılık gösterebilir Bil 102

Örnek Her kitabın Adı Yazarları Yayıncısı Sayfa sayısı ... Bil 102

Örnek Java kitabı: Özellikler: ad: Java ile Programlama Yazarlar: Ali Yazıcı, ... Yayıncı: Palme Sayfa: 270 Matematik kitabı: ad: Calculus Yazar: Thomas Yayıncı: Pearson Sayfa: ... Bil 102

Örnek Personel Sınıfı Sınıf adı: Personel Özellikleri (veriler): özellikler nesne bilgilerini tutmak isim için kullanılır sicilNo vergiNo ePosta Metotlar: metotlar bilgileri işlemek için kullanılır + maasHesabı(); +ePostaYollama(); Bil 102

Örnek Nesne adı: bilgisayarMuhBlmBaskani Özellikler: isim: Erdogan Dogdu sicilNo: Axxx vergiNo: 900xxxxx ePosta: edogdu@etu.edu.tr Bil 102

Personel Sınıfının Java’da Tanımlanması public class Personel { // ozellikler (veriler) public String isim; public String sicilNo; public String vergiNo; public String ePosta; // metotlar public void maasHesabi() { //metot islemleri… } public void ePostaYollama() //metot islemleri Bil 102

Sınıf kullanımı Personel sınıfını kullanabilmek için PersonelDene programı Bu programın çalışması için içinde bir main() metodu olması gerekir Çalıştırılabilir programlar da sınıf olarak tanımlanır Bir programın çalıştırılabilmesi için static main () metodu olması gerekir Bil 102

Sınıf Kullanımı public class PersonelDene { public static void main(String [] args) Personel bilgisayarMuhBlmBaskani; //nesneyi olustur bilgisayarMuhBlmBaskani = new Personel(); bilgisayarMuhBlmBaskani.maasHesabi(); bilgisayarMuhBlmBaskani.ePostaYollama(); } Bil 102

Genel Sınıf Tanımı public class YeniSinif { -- (somutlasan ornek degiskenleri bildirimleri) public void VeriYazdir() --- System.out.println(“Mesaj”); //metot } public void VeriIsle() --- //metot Bil 102

UML Sınıfları gösterirken UML (Unified Modeling Language) gösterimi kullanılabilir Üstte “sınıf adı”, ortada “alan adları ve türleri”, altta “metot ve parametreleri” belirtilir Personel ------------------------------- -isim : String //private String isim; +sicilNo: String //public String sicilNo; +vergiNo: String +ePosta: String -------------------------------- +maasHesabi(): void +ePostaYollama(): void Bil 102

UML Utils ------------------------------------ +a:int -b:int +toplamlariBul(int):int +toplamlariBulV2(int,int):int -carp(int,int):int Bil 102

Java kodu  derleme  Java bayt kodu (class dosyasi) Eğer aynı klasörün içinde bir başka Java programı bu sınıfı kullanıyorsa, yaratılmış olan bu class dosyası tekrar derlenmeden doğrudan kullanılabilir Yeni bir sınıf tanımlandığında, bu sınıfın kullanımı için bu sınıftan bir nesne oluşturulması ve nesne üzerinden metotların çağrılması gerekir Bil 102

public class YeniSinif { public void VeriYazdir() System. out public class YeniSinif { public void VeriYazdir() System.out.println(“Sadece mesaji yazdiralim”); } public class DeneYeniSinif public static void main(String [] args) YeniSinif uye = new YeniSinif(); uye.veriYazdir(); System.out.println(“-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+”); Çıktı: Sadece mesaji yazdiralim -+-+-+-+-+-+-+-+-+-+-+-+-+-+-+-+ Bil 102

Değişkenler  Gerçekleştirme değişkenleri (instance variables) Bir sınıfın içinde yer alan değişken ve metotlar  o sınıfın üyeleri (member) Değişkenler  Gerçekleştirme değişkenleri (instance variables) Nesne yaratılırken özel bir metot olan nesne kurucusu (constructor) kullanılır Nesne kurucusu çağrılırken new komutu uygulanır. Bir nesneye ait özelliklere ve metotlara nokta notasyonu kullanılarak erişilir. Bil 102

Metotların Çağrılması Metotlar iki şekilde kullanılabilir Bir değer geri döndüren metotlar double numara; numara = Math.random(); Bir değer geri döndürmeyen (void) metotlar System.out.println(“Ekrandaki mesaj”); Bil 102

void Metotlar Void metotlar çağrıldığı yere değer döndürmezler public void metot_adi() Metot başlığı { ---; Metot gövdesi } public : metot her isteyen tarafından kullanılabilir void : metot geriye bir değer döndürmüyor nesneAdı.metotAdı(); Metot eğer başka bir sınıfta tanımlı ise, o sınıftan bir nesne oluşturup sonra o nesne ile metodu çağırmak gerekir Eğet çağrılan metot, çağrıldığı sınıf içinde tanımlı bir metottan çağrılıyorsa nesne olmaksızın doğrudan çağrılabilir Bil 102

Değer döndüren metotlar public dondurulen_deger_turu metot_adi() { ---; return deger_turunde_degisken; } İçinde bir veya daha fazla return komutu olmalı Void metodlarda da return komutu olabilir, fakat bir veriyle kullanılamaz ve yalnızca return; şeklinde yazılabilir. Metodun sona ermesi gereken durumlarda kullanılabilir. Bil 102

Örnek public class VeriDondur { public int veriYazdir() int say; String mesaj="Sadece bu mesaji yazdiralim."; System.out.println(mesaj); say=mesaj.length(); return say; } public class deneveriDondur public static void main(String[] args) int sembolSayisi; veriDondur eleman=new veriDondur(); sembolSayisi=eleman.veriYazdir(); System.out.println("Sembol sayisi="+sembolSayisi); Bil 102

Parametreli (veri alan) Metotlar Metot bir veri döndürebildiği gibi çağrıldığı yerden girdi de alabilir Metot adı devamında parantezler içine parametre türleri ve adları virgüllerle ayrılmış şekilde yazılır public dondurulen_deger_turu metot_adi (param_turu param_adi1, …) { ---; } Bil 102

public class veriYolla { public int veriYazdir(String mesaj) int say; System.out.println("Gelen mesaj:"+mesaj); say=mesaj.length(); return say; } import java.util.Scanner; public class deneVeriYolla public static void main(String[] args) veriYolla veri=new veriYolla(); String ileti; int sembolSayisi; Scanner klavye = new Scanner(System.in); ileti=klavye.next(); sembolSayisi=veri.veriYazdir(ileti); System.out.println("Sembol sayisi="+sembolSayisi); Bil 102

this Parametresi Bir metodun içinde gerçekleştirme değişkenleri veya o sınıfa ait başka bir metot kullanılmak isteniyorsa bu verilere veya metotlara this parametresi kullanılarak ulaşılabilir. Bil 102

public class veriYolla2 { public String mesaj; public int veriYazdir() int say; System.out.println("Gelen mesaj:"+this.mesaj); say=mesaj.length(); return say; } import java.util.Scanner; public class deneVeriYolla public static void main(String[] args) veriYolla2 veri=new veriYolla2(); String ileti; int sembolSayisi; Scanner klavye = new Scanner(System.in); ileti=klavye.next(); veri.mesaj = ileti; sembolSayisi=veri.veriYazdir(); System.out.println("Sembol sayisi="+sembolSayisi); Bil 102

Yerel Değişkenler Değişkenler sadece tanımlandıkları alanda geçerlidir Bir metodun içinde tanımlanan bir değişkenin geçerliliği metot bittiğinde sona erer Başka bir metotta aynı isimde bir değişken kullanılsa bile bunlar birbirinden farklı değişkenlerdir Bir değişken bir metotta sadece bir kez tanımlanabilir For döngüsü girişinde tanımlanan bir değişkenin geçerliliği döngü bitince sona erer for(int n=1; n<10;n++) toplam = toplam + n*n; System.out.println(n); // Gecersiz, n tanimli degil Bil 102

Kârla beraber yeni miktar 110 TL public class KarHesabi { public double miktar; public double kar; public void karliToplamGoster () double yeniMiktar = miktar + (kar/100.0)*miktar; System.out.println (“Kârla beraber yeni miktar “ + yeniMiktar + “ TL.”); } public class TicariHesab public static void main (String [] args) KarHesabi karObj = new KarHesabi (); karObj.miktar = 100.00; karObj.kar = 10; karObj.karliToplamGoster (); Kârla beraber yeni miktar 110 TL Bil 102

Parametrelerin Metoda Girişi Metot başlığında tanımlanan parametrelere biçimsel parametre (formal parameter) veya sadece parametre denir. Bir metot çağrıldığında programa ait bazı değişkenler veya değerler parametrelere karşılık olarak metoda gönderilirler. Bunlara da gerçek parametre veya argüman denir. Değer ile çağırma: Argümanların sadece değeri metoda gönderilir. public void dortParametreliMetot(int n1, int n2, double toplam, char harf) { ---; } birNesne.dortParametreliMetot(42, 100, 9.99, ‘Z’); Bil 102

Bilgi Saklanması ve Kuşatma Parametre ve değişkenlerin sadece gerekli durumlarda kullanılması ve program ayrıntılarının mümkün olduğunca saklanmasına kuşatma veya saklama denir. Bil 102

public & private Bir sınıfın gerçekleştirme değişkenlerinin genel (public) olarak tanımlanması tercih edilmez  private public : herhangi bir program veya sınıf tarafından çağrılabilir, kullanılabilir private : sadece sınıfının içindeki metotlar tarafından kullanılabilir, başka bir sınıf veya metot tarafından kullanılamaz Bil 102

Örnek public class personel { public String isim; public String ePosta; public double maas; public double maasHesabi(double brutMaas) double netMaas; netMaas = 0.81*brutMaas; return netMaas; } public void kayitYazdir() System.out.println("Personel ismi:"+isim); System.out.println("Personel ePosta:"+ePosta); System.out.println("Personel maasi:"+maas); Bil 102

Import java.util.Scanner; public class DenePersonel { public static void main(String[] args) personel bil = new personel(); //nesne kurucusu double maas, netMaas; bil.isim="Ahmet Cakir"; bil.ePosta="acakir@etu.edu.tr"; System.out.print("Brut maasi giriniz:"); Scanner klavye=new Scanner(System.in); maas = klavye.nextDouble(); netMaas = bil.maasHesabi(maas); System.out.println("Brut Maas="+maas); System.out.println("Net Maas="+netMaas); bil.maas=netMaas; bil.kayitYazdir(); } Bil 102

Brut maasi giriniz: 4500 Brut maas=4500. 0 Net maas=3645 Brut maasi giriniz: 4500 Brut maas=4500.0 Net maas=3645.00000005 Personel ismi:Ahmet Cakir Personel ePosta:acakir@etu.edu.tr Personel maasi:3645.00000005 Bil 102

public class BankaHesabi { private double bakiye; //public degiskeni public double yeniBakiye(double cekilenMiktar) double kalan; kalan=bakiye-cekilenMiktar; if(kalan<0.0) System.out.println("Yetersiz bakiye..."); return 0.0; } else return kalan; Import java.util.Scanner; public class deneBankaHesabi public static void main(String[]args) { Scanner klavye = new Scanner(System.in); double kalan=1000.0, miktar; BankaHesabi hesap=new BankaHesabi(); System.out.print("Cekilecek miktar:"); miktar=klavye.nextDouble(); hesap.bakiye=kalan; // Derleyicide burada hata gösterecek. // Bakiye has private access in BankaHesabi kalan=hesap.yeniBakiye(miktar); System.out.println("Yeni bakiye="+amount); Bil 102

Private Özel değişkenlere ulaşılması gerektiğinde erişim (accessor) metodu, özel değişkenleri değiştirmek gerektiğinde değiştirici (mutator) metodu kullanılır. Erişim ve değiştirici metotları diğer sınıfların erişebilmesi için public tanımlanır. Erişim metodu adı  getDegiskenAdı() Değiştirici metodu adı  setDegiskenAdi() Bil 102

set/get Metotları Set metodu: Değişkenin değerini değiştirir. Get metodu: Değişkenlerin değerini kullanan programa döndürür (okur). Metot adı olarak set ve get kullanılması zorunlu değildir. (Örn. yaz ve oku) public void setDegisken (int sayi) { privateDegisken = sayi; } public int getDegisken () return privateDegisken; Bil 102

public class BankaHesabi3 { private double hesapBakiyesi; public void setHesapBakiyesi(double Miktar) hesapBakiyesi =Miktar; } public double paraCek(double cekilenMiktar) double bakiye = hesapBakiyesi; bakiye-=cekilenMiktar; if(bakiye<0.0) System.out.println("Yetersiz bakiye..."); else hesapBakiyesi = bakiye; return hesapBakiyesi; public double getHesapBakiyesi() Bil 102

import java.util.Scanner; public class deneBankaHesabi { public static void main(String[]args) Scanner klavye = new Scanner(System.in); double kalan, miktar; BankaHesabi3 hesap=new BankaHesabi3(); System.out.print("Hesabinizdaki para:"); kalan=klavye.nextDouble(); System.out.print("Cekilecek para:"); miktar=klavye.nextDouble(); hesap.setHesapBakiyesi(kalan); kalan=hesap.paraCek(miktar); System.out.println("Yeni bakiye="+kalan); hesap.setHesapBakiyesi(kalan*1.1); kalan=hesap.getHesapBakiyesi(); } Hesabinizdaki para:10000 Cekilecek para:400 Yeni bakiye:9600.0 Yeni bakiye:10560.0 Bil 102

set/get Metotları setHesapBakiyesı() ve getHesapBakiyesi() metotları genel erişimli (public) oldukları için sınıf dışından çağrılarak ilgili değişken alanının okunması ve yazılması sağlanabilir. Her değişken için bu metotların yazılması zorunlu ve gerekli değildir. Tasarımcının kararına göre değişkenlere bu erişim hakkı verilebilir. Her değişkene bu şekilde erişim yapılması halinde genel erişimden bir fark kalmaz. Bil 102

OgrenciKayıt UML ad: String kisaSinav1: int kisaSinav2: int OgrenciKayit ad: String kisaSinav1: int kisaSinav2: int araSinav: int final: int toplamPuan: double not: char +veriGir(): void +ciktiYaz(): void +setToplam(): void +setNot(): void Bil 102

public class ogrenciKayit { private int kisaSinav1, kisaSinav2, araSinav, finalSinavi; private double toplamPuan; private char notu; private string ad; public void veriGir() { Scanner klavye = new Scanner(System.in); System.out.print(“Ogrenci adini giriniz:”); ad = klavye.next(); System.out.print(“Kisa sinav1 ve kisa sinav2 notlari:"); kisaSinav1 = klavye.nextInt(); kisaSinav2 = klavye.nextInt(); System.out.print(“Ara sinav ve final notlari:"); araSinav = klavye.nextInt(); finalSinavi = klavye.nextInt(); } public void ciktiYaz() System.out.println (“Isim = “ + ad); System.out.println("Toplam puan ve notu:"); System.out.println(toplamPuan+" "+notu); Bil 102

Ogrenci adini giriniz: Ahmet Kisa Sinav1, Kisa Sinav2 notlari: 45 67 public void setToplam() { toplamPuan=0.25*(kisaSinav1+kisaSinav2)/2.0+0.5*finalSinavi+0.25*araSinav; } public void setNot() if(toplamPuan>=90.0) notu='A'; else if(toplamPuan>=80.0) notu='B'; else if(toplamPuan>=70.0) notu='C'; else if(toplamPuan>=60.0) notu='D'; else notu='F'; public class deneOgrenciKayit public static void main(String[]args) OgrenciKayit ogrenci1=new OgrenciKayit(); ogrenci1.veriGir(); ogrenci1.setToplam(); ogrenci1.setNot(); ogrenci1.ciktiYaz(); Ogrenci adini giriniz: Ahmet Kisa Sinav1, Kisa Sinav2 notlari: 45 67 Ara sinav ve final notlari: 55 80 Isim = Ahmet Toplam puan ve not: 67.75 D Bil 102

Sınıfta Sorulan Sorular Yeni bir sınıf yazınca bunu kullanmak için import yapmak gerekir mi: Hayır. import komutunu sınıfları değil paketleri (20-30 tane birbiriyle alakalı sınıftan oluşan gruplar) kullanmak için yazıyoruz. Bil 102

public class KesirliSayi { private int pay; private int payda; public void setSayi(int pay1, int pay2) { pay = pay1; payda = pay2; } public int getPay() return pay; public int getPayda() return payda; public KesirliSayi topla(KesirliSayi sayi1) KesirliSayi sayi2 = new KesirliSayi(); sayi2.pay = sayi1.pay * payda + pay * sayi1.payda; sayi2.payda = sayi1.payda * payda; return sayi2; public void yazdir() System.out.println(pay + "/" + payda); Bil 102

import java.util.Scanner; public class DeneKesirliSayi { public static void main(String[] args) { int pay1, pay2, payda1, payda2; KesirliSayi ilkSayi = new KesirliSayi(); KesirliSayi ikinciSayi = new KesirliSayi(); KesirliSayi sayilarToplami; KesirliSayi sonSayi = new KesirliSayi(); Scanner klavye = new Scanner(System.in); System.out.println("Birinci sayinin pay ve paydasi:"); pay1 = klavye.nextInt(); payda1 = klavye.nextInt(); ilkSayi.setSayi(pay1, payda1); System.out.println("Ikinci sayinin pay ve paydasi:"); pay2 = klavye.nextInt(); payda2 = klavye.nextInt(); ikinciSayi.setSayi(pay2, payda2); sayilarToplami = ilkSayi.topla(ikinciSayi); sayilarToplami.yazdir(); sonSayi.setSayi(7,8); sonSayi.yazdir(); } Bil 102

Kuşatma prensiplerine uygun iyi bir sınıf tasarımı için: Sınıf tanımından hemen önce sınıfın, verilerin ve metodların amacını kısa şekilde açıklayan bir yorum konmalıdır. Bütün sınıf gerçekleştirme değişkenleri “private” olarak tanımlanmalıdır. Diğer sınıflar ve programlar tarafından değerlerinin değiştirilmesi veya atanması gerekebilecek değişken ve metotlar için erişim ve değiştirici (get,set) metotları yaratılmalıdır. Bütün public metotların başında metot hakkında bilgi veren kısa bir yorum bulunmalıdır. Sınıf içinde kullanılan, dışarıyla irtibatı olmayan bütün metotlar “private” olarak tanımlanmalıdır. Bunlara yardımcı metotlar denir ve yalnızca sınıf içinde tanımlı diğer metotlar tarafından kullanılırlar. Bil 102

Nesneler ve Gösterimleri Değer ile çağırma: Değişkenin aldığı değer metoda gönderilir, eğer metoda giren veri türleri temel veri türleri (int vs.) ise. Metot içinde yapılan işlemler orjinal nesneyi değiştirmez. Referans ile çağırma: Eğer temel veri türlerinden değilse o zaman metoda değişkenin (nesnenin) kendisi göderilmiş gibi olur; nesnenin bellekteki adresi yollanır. Metot içinde yapılan işlemler orjinal nesneyi değiştirir. Bil 102

Nesneler ve Gösterimleri Temel veri tipi ataması: int i,j; i = 10; j = i; i = 20; System.out.println(i + “ ve “ + j); 20 ve 10 Bil 102

Nesneler ve Gösterimleri Nesnelerin atanmaları sonucu Araba ferrari, fiat; ferrari = new Araba (); fiat = new Araba (); ferrari.set (“kirmizi”, “450 HP”, “320 km/h”); fiat.set (“beyaz”, “70 HP”, “155 km/h”); fiat = ferrari; fiat.set (“mavi”, “80 HP”, “160 km/h”); System.out.println (“fiat: “ ); fiat.veriGöster (); System.out.println (“ferrari: “ ); ferrari.veriGöster (); fiat: mavi 80HP 160km/h ferrari: mavi 80HP 160km/h Bil 102

Referans ile Çağırma İki basit veri tipi kullanıldığında değişkenler birbirinden bağımsız hareket ederler ve iki ayrı değişken olarak değer alabilirler. Nesne kullanıldığında atama işlemi esnasında “=” işaretinin (atama işareti) sağındaki nesnenin referansı işaretin solundaki referansa eşitlenir. iki nesne ismi (değişken ismi) aynı nesneyi gösteriyor olmuştur. Dolayısıyla bir değişken ismi kullanarak yapılan bir değişim diğer değişkeni de (ismi farklı olsa da) aynı şekilde değiştirmektedir. Bunun sebebi iki nesnenin de referanslarının aynı olmasıdır. Bil 102

Nesneleri Karşılaştırma İki nesne == ile karşılaştırılırsa nesnelerin bellek adresleri karşılaştırılmış olacaktır. İki nesnenin eşitliği bütün nesne özelliklerinin karşılaştırılmasını gerektirir  equals() metodu yazılmalı! İki nesnenin alanlarını tek tek karşılaştırmalı. Bil 102

KesirliSayı için equals() { … public boolean equals(KesirliSayi sayi) return this.pay == sayi.pay && this.payda == sayi.payda; } Bil 102

… KesirliSayi s1 = new KesirliSayi(); s1 … KesirliSayi s1 = new KesirliSayi(); s1.setSayi(3,5); KesirliSayi s2 = new KesirliSayi(); s2.setSayi(3,5); if (s1.equals(s2)) System.out.println(s1.yazdir()+ " ve "+ s2.yazdir()+ " esittir"); else System.out.println(s1.yazdir()+ " ve "+ s2.yazdir()+ " esit degildir"); if (s1 == s2) System.out.println("s1 ve s2 ayni nesnelerdir"); System.out.println("s1 ve s2 farkli nesnelerdir"); 3/5 ve 3/5 esittir s1 ve s2 farkli nesnelerdir Bil 102

Nesne işlemleri Nesneleri karşılaştırmak için == kullanamıyoruz, equals() metodu yazmak gerekiyor. Nesne değerlerini birbirlerine atamak için de atama komutu = kullanamıyoruz, kopyalama amaçlı bir metot yazmak gerekiyor. Eğer = kullanırsak nesne değişkenlerinin adresleri eşitlenir ve iki değişken aynı nesneyi gösterir. Bil 102

... public KesirliSayi kopya() { KesirliSayi yeniSayi = new KesirliSayi(); yeniSayi.setSayi(this.pay, this.payda); return yeniSayi; } KesirliSayi s2 = s1.kopya(); Bil 102

Referans: kadioğlu Bil 102