Örnek Fonksiyonlar
Bilgisayar ve Programlamaya Giriş
SözleşmeSayıDoğrulamaYeniden kullanımTest
Sercan KÜLCÜ · Giresun ÜniversitesiGiriş
Öğrenme Çıktıları
Sözleşme
Metodun girdi ve çıktısını belirlemek.
Dönüş
Sonucu uygun türle döndürmek.
Özel durum
Geçersiz girdiyi ele almak.
Test
Metotları bağımsız örneklerle sınamak.
Tasarım
Önce Metot Sözleşmesi
- Metot adı yaptığı işi açıkça belirtmelidir.
- Parametrelerin geçerli değer aralığı tanımlanmalıdır.
- Dönüş değerinin anlamı ve hata davranışı bilinmelidir.
Sayı Metotları
Tek / Çift
static boolean çiftMi(int sayı) {
return sayı % 2 == 0;
}- boolean sonuç kararlarda doğrudan kullanılabilir.
- Metot ekrana yazmak yerine sonucu döndürür.
Sayı Metotları
Basamak Sayısı
static int basamakSayısı(int sayı) {
int kalan = Math.abs(sayı);
if (kalan == 0) return 1;
int adet = 0;
while (kalan > 0) { adet++; kalan /= 10; }
return adet;
}Sayı Metotları
Rakamlar Toplamı
static int rakamlarToplamı(int sayı) {
int kalan = Math.abs(sayı), toplam = 0;
while (kalan > 0) {
toplam += kalan % 10;
kalan /= 10;
}
return toplam;
}Sayı Metotları
Tam Sayı Üssü
static long üsAl(int taban, int üs) {
if (üs < 0) throw new IllegalArgumentException();
long sonuç = 1;
for (int i = 0; i < üs; i++) sonuç *= taban;
return sonuç;
}- Sözleşme negatif üssü kabul etmiyor.
- Taşma ihtiyacı ayrıca değerlendirilmelidir.
Sayı Metotları
Faktöriyel
static long faktöriyel(int n) {
if (n < 0) throw new IllegalArgumentException();
long sonuç = 1;
for (int i = 2; i <= n; i++) sonuç *= i;
return sonuç;
}Sayı Metotları
Asal mı?
static boolean asalMı(int n) {
if (n < 2) return false;
for (int i = 2; i <= n / i; i++)
if (n % i == 0) return false;
return true;
}- İlk bölen bulunduğunda erken dönüş yapılır.
Ayrıştırma
Öğrenci Numarası Metotları
- Her bilgi için ayrı metot tasarlanabilir: kayıtYılı, bölümKodu, sıraNo.
- Numara başında sıfır olabiliyorsa String parametresi kullanılmalıdır.
- Uzunluk ve karakter doğrulaması ayrıştırmadan önce yapılmalıdır.
Ayrıştırma
Metinle Ayrıştırma
static int kayıtYılı(String no) {
if (!no.matches("\d{9}"))
throw new IllegalArgumentException("9 rakam gerekir");
return 2000 + Integer.parseInt(no.substring(0, 2));
}Seriler
Fibonacci Yazdırmak Yerine Üretmek
static long[] fibonacci(int adet) {
long[] seri = new long[adet];
for (int i = 0; i < adet; i++) {
if (i < 2) seri[i] = i;
else seri[i] = seri[i-1] + seri[i-2];
}
return seri;
}- Diziyi döndürmek hesaplama ile sunumu ayırır.
- Çağıran kod sonucu yazdırabilir veya başka işlemde kullanabilir.
Test
Metot Testleri
| Metot | Normal | Sınır | Geçersiz |
|---|---|---|---|
| basamakSayısı | 487 → 3 | 0 → 1 | MIN_VALUE |
| faktöriyel | 5 → 120 | 0 → 1 | -1 → hata |
| asalMı | 13 → true | 2 → true | 1 → false |
| fibonacci | 5 eleman | 0 eleman | negatif → hata |
Tasarım
Saf Metot ve Yan Etki
- Aynı girdi için aynı sonucu döndüren ve dış durumu değiştirmeyen metot daha kolay test edilir.
- Hesaplama metodu ile ekrana yazma metodu ayrılabilir.
- Gerektiğinde yan etki açıkça adlandırılmalı ve sınırlandırılmalıdır.
Tasarım
Yeniden Kullanım
- Metot tek bir örneğe değil genel kurala göre yazılmalıdır.
- Sabit değerler gerektiğinde parametreye dönüştürülür.
- Benzer kodlar ortak bir metotta birleştirilirken anlam kaybı yaratılmamalıdır.
Özet
Bölüm Özeti
- Örnek problemler girdi, çıktı ve hata davranışı belirlenerek metoda dönüştürülür.
- Hesaplama sonucunu döndürmek yeniden kullanımı ve testi kolaylaştırır.
- Sınır ve geçersiz değerler metot sözleşmesinin parçasıdır.
- Küçük ve odaklı metotlar daha kolay birleştirilir.
Özet
Kontrol Soruları
- çiftMi neden ekrana yazmak yerine boolean döndürüyor?
- Faktöriyel metodunda negatif girdi nasıl ele alınır?
- Öğrenci numarası ne zaman String olmalıdır?
- Fibonacci dizisi döndürmek ne sağlar?
- Saf metotlar neden daha kolay test edilir?
Son
Örnek Fonksiyonlar
1 / 1Sercan KÜLCÜ, Tüm hakları saklıdır.
← → veya boşluk ile gezinin · F: tam ekran · Home/End: ilk/son slayt