Kompozisyon Bir Sınıf diğer sınıf nesne referanslarını içinde barındırabilir. Bu referanslar sınıfın üyeleridir.

Slides:



Advertisements
Benzer bir sunumlar
Java Programlama Giriş/Çıkış
Advertisements

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
Tuğba DEMİREL
Programlama-II (Java ile Bilgisayar Programlama)
Nesneye Dayalı Programlama
Hata Kontrol & İstisna durumları
Miras Alma EM-406 Java.
Bölüm 4 – Kontrol İfadeleri:1.kısım
OOP UYGULAMA 5.
EDUTIME Java Day 4 Serdar TÜRKEL.
Karar ifadeleri ve Döngüler
Nesne Tabanlı Programlama Dersi Edirne Kız Teknik ve Meslek Lisesi Hazırlayan : Nuri AVCI
Nesneye Yönelik Programlama Dr. Pelin GÖRGEL
DÖNGÜ İFADELERİ.
NESNEYE YÖNELİK PROGRAMLAMA
BPR152 ALGORİTMA VE PROGRAMLAMA - II
DELEGATE OOP-UYG.
Erişim Denetimi, Fonksiyon
NESNE TABANLI PROGRAMLAMA -METOTLAR-
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; ???
Chapter 7: Using Methods. Metotları ve Kodlamayı Gizlemeyi Anlama Metot – Kapsüllenmiş ifadeler serisini gerçekleştiren bir görev – Kullanılan metodun.
İş Parçacıkları Thread(s)
LINQ (Language Integrated Query)
BPR152 ALGORİTMA VE PROGRAMLAMA - II Öğr. Gör. Bayram AKGÜL
Ses Kontrol Metodlar ile ilgili son birkaç söz Tekrar: Programlama için başlıca 3 model.
Metotlar.
FONKSİYONLAR.
METOTLAR.
Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü ++ Bilişim Enstitüsü C ++ Nesne.
ÇOK BİÇİMLİLİK POLYMORPHISM
Önceki Dersi Hatırlama !!
Kalıtım.
Diziler Adres Kavramı Nesnelerin Adresleri sizeof Operatörü
JAVA’DA DÖNGÜLER.
EDUTIME Java Day 8 Serdar TÜRKEL.
Demet AYDIN METODLAR Demet AYDIN
 2006 Pearson Education, Inc. All rights reserved. Görsel C# ile Windows Programlama Güz 2009 (7. Hafta)
Fonksiyonlar Fonksiyon Tanımı Değer Döndürmeyen Fonksiyonlar
JAVA’DA DİZİLER Dr.Galip AYDIN.
Bölüm 5 Nesneler ve Metotlar
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.
Bölüm 8 – Nesne-Tabanlı Programlama
Outline 4.1 Giriş 4.2 Algoritmalar 4.3 Pseudocode 4.4 Kontrol İfadeleri 4.5 if tek-seçimli ifadeler 4.6 if else seçimli ifadeler 4.7 while döngü ifadeleri.
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; }
BTP206– Görsel Programlama II
MOB İ L UYGULAMA GEL İ ŞT İ RME Hafta 11. VER İ LER İ SAKLAMA Android sistemlerinde hazırlanacak projelerde verileri saklamak için android sisteminin.
* Miras * Yazılımı yeniden kullanabilirliği artırır. * Varolan sınıflardan yeni sınıflar türetmeyi sağlar. * Varolan sınıfın veri ve metodlarını kendi.
BİLGİSAYAR programlama II
Sakarya Üniversitesi Bilgisayar ve Bilişim Bilimleri Fakültesi Bilgisayar Mühendisliği Prof. Dr. Ümit Kocabıçak Prof. Dr. Cemil Öz Doç. Dr. Ahmet Turan.
JAVA 1. GİRİŞ & TARİHÇE Java, Sun Microsystems mühendislerinden James Gosling tarafından geliştirilmeye başlanmıştır. Açık kodlu. Nesneye yönelik. Düzlemden.
İbrahim Olgaç PROGRAMLAMA DİLLERİ SUNUMU C#
C dili kullanıcıya kendi ihtiyacı olan bir fonksiyonu yazma imkanı vermiştir. Bir sayının faktöriyelini almaya ihtiyaç duyduğumuzu ve aynı zamanda asal.
C’de Fonsiyonlar Aslı Ergün.
Veri Tipleri 12/4/2018.
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
Nesneye Dayalı Programlama 1
MTM216 GÖRSEL PROGRAMLAMA
BLP 4210 PLATFORM BAĞIMSIZ PROGRAMLAMA
NİŞANTAŞI ÜNİVERSİTESİ
Sunum transkripti:

Kompozisyon Bir Sınıf diğer sınıf nesne referanslarını içinde barındırabilir. Bu referanslar sınıfın üyeleridir.

* 1 // Fig. 8.9: Date.java * 2 // Date class declaration. * 3 * 4 public class Date { * 5 private int month; // 1-12 * 6 private int day; // 1-31 bir aylık * 7 private int year; // sene * 8 * 9 * 10 * 11 public Date( int theMonth, int theDay, int theYear ) * 12 { * 13 month = checkMonth( theMonth ); // ayı kontrol et * 14 year = theYear; // * 15 day = checkDay( theDay ); // * 16 * 17 System.out.println( "Date object constructor for date " + * 18 toDateString() ); * 19 * 20 } // end Date constructor * 21 * 22 // utility method to confirm proper month value * 23 private int checkMonth( int testMonth ) * 24 { * 25 if ( testMonth > 0 && testMonth <= 12 ) // validate month * 26 return testMonth;

* 27 * 28 else { // month is invalid * 29 System.out.println( "Invalid month (" + testMonth + * 30 ") set to 1." ); * 31 return 1; // maintain object in consistent state * 32 } * 33 * 34 } // end method checkMonth * 35 * 36 // utility method to confirm proper day value based on month and year * 37 private int checkDay( int testDay ) * 38 { * 39 int daysPerMonth[] = * 40 { 0, 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; * 41 * 42 // check if day in range for month * 43 if ( testDay > 0 && testDay <= daysPerMonth[ month ] ) * 44 return testDay; * 45 * 46 // check for leap year * 47 if ( month == 2 && testDay == 29 && ( year % 400 == 0 || * 48 ( year % 4 == 0 && year % 100 != 0 ) ) ) * 49 return testDay; * 50 * 51 System.out.println( "Invalid day (" + testDay + ") set to 1." ); * 52 * 53 return 1; // maintain object in consistent state * 54 * 55 } // end method checkDay

* 56 * 57 // return a String of the form month/day/year * 58 public String toDateString() * 59 { * 60 return month + "/" + day + "/" + year; * 61 } * 62 * 63 } // end class Date

* 1 // Fig. 8.10: Employee.java * 2 // Employee class declaration. * 3 * 4 public class Employee { * 5 private String firstName; * 6 private String lastName; * 7 private Date birthDate; * 8 private Date hireDate; * 9 * 10 // constructor to initialize name, birth date and hire date * 11 public Employee( String first, String last, Date dateOfBirth, * 12 Date dateOfHire ) * 13 { * 14 firstName = first; * 15 lastName = last; * 16 birthDate = dateOfBirth; * 17 hireDate = dateOfHire; * 18 } * 19 * 20 // convert Employee to String format * 21 public String toEmployeeString() * 22 { * 23 return lastName + ", " + firstName + * 24 " Hired: " + hireDate.toDateString() + * 25 " Birthday: " + birthDate.toDateString(); * 26 } * 27 * 28 } // end class Employee

* 1 // Fig. 8.11: EmployeeTest.java * 2 // Demonstrating an object with a member object. * 3 import javax.swing.JOptionPane; * 4 * 5 public class EmployeeTest { * 6 * 7 public static void main( String args[] ) * 8 { * 9 Date birth = new Date( 7, 24, 1949 ); * 10 Date hire = new Date( 3, 12, 1988 ); * 11 Employee employee = new Employee( "Bob", "Jones", birth, hire ); * 12 * 13 JOptionPane.showMessageDialog( null, employee.toEmployeeString(), * 14 "Testing Class Employee", JOptionPane.INFORMATION_MESSAGE ); * 15 * 16 System.exit( 0 ); * 17 } * 18 * 19 } // end class EmployeeTest Date object constructor for date 7/24/1949 Date object constructor for date 3/12/1988

* final anahtar kelimesi * Değişken güncelleştirilemez. * final değişkeni değiştirmeye kalkılsa hata verir. private final int INCREMENT = 5; * INCREMENT değişkeni sabit olarak tanıtılmıştır.

* Bir metodun birden fazla durum için kullanılabilmesi işlemi. * Sınıfın içinde metodun kullanılması gereken her durumun tanımlanması gerekmektedir. Bu metot başka bir metot tarafından çağırıldığında metottaki tanım ve parametre dizilişine göre hangi tanımın geçerli olduğu belli olacaktır. * Bir metodun fazladan yüklenmesi yapılırken sadece metoda girilen parametrelere bakılır. Metodun geri verdiği veri tipinin bir önemi yoktur.

* Örn. * Math.max (x,y) yazıldığında aynı metota int, long, float veya double veri tipi girilebilir. Bu durumda max metodu aşırı yüklenmiştir ve hangi veri tipinin hangi max metodunu kullanacağı girilen parametrelere göre ayarlanır.

public class fazladanYukleme { public void ayniSey() { System.out.println("Merhaba gencler..."); } public boolean ayniSey(int sayi) { boolean yanit; if(sayi%2==0) yanit=true; else yanit=false; return yanit; } public class fazladanYuklemeDeneme { public static void main(String[]args) { boolean yanit; int N; Scanner klavye = new Scanner(System.in); System.out.print("Bir sayi giriniz:"); N=klavye.next(); fazladanYukleme fark=new fazladanYukleme(); yanit=fark.ayniSey(N); if(yanit) System.out.println(N+" cift sayidir."); else System.out.println(N+" tek sayidir."); fark.ayniSey(); }

* Metot fazladan yüklemesi yapıldığında veri tipi çevirimlerine dikkat etmek gerekir. Eğer double parametresi bekleyen bir metoda int veri tipi girildiğinde, eğer int veri tipi bekleyen aşırı yüklenmiş metot tanımı yoksa int otomatik olarak double’a çevrilir ve metot kullanılır. Bunun tersi durumda ise (double’ı int’e çevirmek gerektiğinde) derleyici bir hata verir. Bu durumda veri zorlaması yapılması gerekmektedir. * public static void ornekMetot (double n1, int n2) public static void ornekMetot (int a1, double a2) ornekMetot (5,10); ornekMetot (5.0,10);

* Aynı parametrelere sahip, farklı veri tipi döndüren iki fazladan yüklenmiş metot Java’da aynı sınıf tanımı içinde kullanılamaz. * public static int ornekMetot () public static char ornekMetot () * Hata: Aynı parametreler girildiğinde hangi metodun kullanılacağı belli değil.

Doğru Yanlış

İSTİSNA YÖNETİMİ (EXCEPTION) İstisnalar, programımızın çalışma zamanında yani program çalışırken kullanıcı kaynaklı yanlış veri tipi girme gibi daha birçok şekilde ortaya çıkan olağan dışı durumlardır. Programcılık dilinde "programın kırılması" ile adlandırılan olaylarda aslında bir istisnanın meydana geldiğini göstermektedir. Örneğin bir sayının sıfıra bölünmesi gibi Exception in thread «main» java.lang.ArithmeticException: / by zero at Donusum1.main(Donusum1.java:14) Başka bir istisna örneği ise uyumsuz tipler arasında değer aktarımı gerçekleştirmeye çalışmaktır. Bir programcı olarak kod üzerinde her ne kadar detaylı çalışma yapsakta kullanıcı faktörü göz önüne alındığında çalışma zamanı hatalarının ( Runtime Error ) ortaya çıkması olasıdır.

Çalışma zamanında ortaya çıkabilecek bazı istisnalar. int sayi1 = 15; int sayi2 = 0; int sonuc = 0; sonuc = sayi1 / sayi2; // Sıfıra bölünme hatası sonuc = Integer.parseInt("Selam"); // Tür dönüşüm hatası Exception in thread "main" java.lang.ArithmeticException: / by zero at Donusum1.main(Donusum1.java:14) Exception in thread "main" java.lang.NumberFormatException: For input string: "Selam" at java.lang.NumberFormatException.forInputString(Unknown Source) at java.lang.Integer.parseInt(Unknown Source) at java.lang.Integer.parseInt(Unknown Source) at Donusum1.main(Donusum1.java:15)

* Hataları ve istisnaları belirlemek ve bu istisnaları yakalayıp yönetmek için bir takım işlemler yapmak gerekmektedir. * Bir hatayı ortaya çıkmadan önce belirleyebilmek için öncelikle çalışma anı hatalarının ortaya çıkabileceği kodları belirlemek gerekir. Bu işlem yapıldıktan sonra önceden tanımlanmış bazı ifadelerden birini kullanarak istisna yakalama işlemi gerçekleştirilir. Bunlar; * 1. try catch * 2. try finally * 3. try catch finally *

int sayi1 = 15; int sayi2 = 0; int sonuc = 0; try { sonuc = sayi1 / sayi2; // Sıfıra bölünme hatası } catch(Exception hata) { JOptionPane.showMessageDialog(null, "Hata var: " + hata ); } try { Sonuc = Integer.parseInt("Selam"); // Tür dönüşüm hatası } catch(Exception hata) { JOptionPane.showMessageDialog(null, "Hata var: " + hata ); }

try { String[] Aylar = {"Ocak","Şubat","Mart","Nisan","Mayıs"}; for(int i = 0; i < 10; i++) { System.out.print(Aylar[i] + " "); } catch(ArrayIndexOutOfBoundsException hata) { System.out.println("Hata var : " + hata.toString()); } finally { System.out.println("Bitti"); }

InputStreamReader SatirOku = new InputStreamReader(System.in); BufferedReader br = new BufferedReader(SatirOku); while (true) { System.out.print("Yarıçapı Girin: "); String str = br.readLine(); double yaricap; try { yaricap = Double.valueOf(str).doubleValue(); } catch (NumberFormatException nfe) { System.out.println("Hatalı veri tipi yeniden girin"); continue; } if (yaricap <= 0) { System.out.println("Yarıçap pozitif tamsayı olmalı!"); continue; } double alan = Math.PI * yaricap * yaricap; System.out.println("Alan: " + alan); return; } catch (Exception e) { e.printStackTrace(); }