Categories
Object Oriented Design

Final Sample Questions

Decorator

  1. “Hello” print yapan bir fonksiyon tanımlayınız.

    Ekrana aldığı fonksiyonun geriye döndürdüğü string ifadenin tersten yazıp, başına *** ve sonuna — ekleyen bir decorator fonksiyon geliştiriniz.

    print yapan fonksiyonu dekoratör fonksiyonu ile dekore ediniz.

    Beklenen çıktı ***olleH—

Tasarım Kalıpları

  1. Tasarım kalıpları kullanmanın avantajları nelerdir?
  2. Fabrika tasarım kalıbı nasıl çalışır?
  3. Adapter tasarım kalıbı nasıl çalışır?
  4. Command tasarım kalıbı nasıl çalışır?
  5. MVC nedir? Nasıl çalışır?
  6. Bir dilden başka bir dile çeviri yapan bir uygulama bulunmaktadır. Mevcut olan uygulamaya yeni diller eklenmek isteniyor. 3 elemanlı bir kelime listesi yaratınız. Kelimeleri “Merhaba”, “Güzel”, “Evet” içerikleri ile doldurunuz. Yeni eklenebilecek dillere karşı esnek bir çözüm sağlayacak uygun bir tasarım kalıbı kullanarak uygulama geliştiriniz. Hangi tasarım kalıbının neden kullanıldığını açıklayınız.

Refactoring ve Yazılım Testi

  1. Kirli ve Temiz Kod nedir?
  2. Aşağıda verilen kaynak koda refactoring işlemi uygulayınız.

Eş Zamanlılık

  1. Thread ve Process arasındaki farklar nedir?
  2. Sequential, Concurrent ve Paralel hesaplama arasındaki farklar nedir?
  3. Fibonacci sayısını tespit eden bir fonksiyon geliştiriniz. Bu fonksiyonu hem concurrent hemde ardışık olarak 10,11 ve 12 argümanları ile çalıştırıp hesaplama sürelerini gösteren bir uygulama geliştiriniz
Categories
Object Oriented Design

Midterm Sample Questions

Veri Koleksiyonları

  1. 10 ile 100 arasında rasgele bir sayı oluşturun. Oluşturulan rasgele sayı kadar bir liste oluşturarak içerisine rasgele sayılar ekleyiniz. Eklenen sayıların ortanca sayısını ekrana gösteren bir uygulama geliştiriniz.
  2. 10 ile 100 arasında rasgele iki sayı oluşturun. Oluşturulan 1. rasgele sayı kadar 1. listeye rasgele sayılar yerleştiriniz. Oluşturulan 2. rasgele sayı kadar 2. listeye rasgele sayılar yerleştiriniz. Bu iki liste arasındaki ortak elemanları ekrana gösteren bir uygulama geliştiriniz. Not: Ortak sayılar aranırken aynı sayı sadece bir defa ekrana basılmalıdır.

Objeler ve Sınıflar

  1. dikdortgenPrizmasi isminde bir sınıf geliştirilecektir. Aşağıdaki şekilde bir dikdörtgen prizması verilmiştir.


    Bu sınıfın private olarak en, boy ve yukseklik ve public alan değişkenleri bulunmaktadır.

    Constructor’unda 3 adet integer almakta ve değişkenlere yazmaktadır.

    hacimHesapla fonksiyonu geriye en, boy, yukseklik değişkenlerinin çarpımını döndürmektedir ve alan değişkenine kaydetmektedir.

    yuzeyAlanHesapla fonksiyonu ise, tüm yüzlerin alan toplamını geri döndürmektedir.

    dikdortgenPrizmasi sınıfını test eden bir kod geliştiriniz. Sınıftan yaratılan objenin hacimHesapla ve yuzeyAlanHesapla fonksiyonlarını kullanarak ekrana bastırınız.

  2. zaman isimli bir sınıf oluşturunuz.

    public olarak,

    * int yil
    * int ay
    * int gun
    * int saat
    * int dakika
    * int saniye

    * zaman(self, int, int, int, int, int, int)
    * zaman farkAl(zaman)
    * void bastir()

    değişken ve fonksiyonları bulunmaktadır.

    Sınıf’ın constructor’undan alınan argümanlar, sınıf değişkenlerine yazılmaktadır.

    farkAl fonksiyonu, zaman sınıfı objesi alıp, şu anki obje ile argüman olarak alınan objenin arasındaki farkı alıp geriye zaman sınıfı olarak döndürmektedir. Eğer şuanki obje, argüman olarak alınan objeye göre daha yeni bir tarih ise, geriye dönecek tüm zaman değişkenleri -1 olacaktır.

    bastir fonksiyonu ise tüm değişkenleri ekrana bastırmaktadır.

    Main’de zaman sınıfından iki obje türetip, ilk objenin farkAl fonksiyonuna ikinci objeyi argüman olarak gönderip, geri dönen zaman sınıfının değişkenlerini ekrana bastir fonksiyonu ile bastiriniz.

  3. ikizkenarUcken isimli bir sınıf yaratınız.

    Bu sınıfta private olarak,

    * int ikizKenarAcisi
    * int digerAci
    * int digerAciHesaplama()

    değişkenler ve fonksiyonu

    Public olarak,

    * ikizKenarUcken(int)
    * int ikizKenarAcisiAl()

    fonksiyonu bulunmaktadır.

    Constructor’da alınan argüman, ikizKenarAcisi değişkenine yazılmakta ve digerAciHesaplama fonksiyonu çağrılmaktadır.

    ikizKenarAcisiAl() fonksiyonu geriye ikizKenarAcisi degiskenini dondurmektedir.

    digerAciHesaplama fonksiyonu, ikizKenarAcisi değişkenini iki ile çarparak 180’den çıkartıp, digerAci değişkenine yazmaktadır. digerAci değişkeni – hesaplanır ise, bu fonksiyon hata mesajı yazdıracaktır. Eğer digerAci değişkeni 60 çıktı ise, ekrana “Eşkenar üçken” yazdırılacaktır.

    ikizKenarUcken sınıfını test edecek bir kod parçacığı geliştiriniz.

Kalıtım

  1. Bir üniversite’nin ders bilgilerini içerecek bir uygulama geliştirilecektir.

    Fizik, kimya, matematik ve ders isminde 4 sınıf oluşturunuz.

    ders sınıfında;

    * string dersAdi
    * int kayitliOgrenciSayisi

    değişkenleri bulunacaktır.

    Fizik, kimya ve matematik sınıfları, ders sınıfından kalıtım yapılacaktır.

    Bu sınıfların constructor’unda ders adı ve kayitliOgrenciSayisi parametresi alarak dersAdı ve kayitliOgrenciSayisi değişkenlerine yazacaktır.

    Bu sınıfların içine yazılacak, kimyaDeneyiYap, fizikDeneyiYap, matematikDeneyiYap fonksiyonları ile ekrana “Fizik deneyi yapıldı”, “Kimya deneyi yapıldı”, “Matematik deneyi yapıldı” metinlerini bastırınız (Örn kimya sınıfı için sadece kimyaDeneyiYap fonksiyonu olacak).

    Fizik, kimya ve matematik sınıflarından birer obje yaratıp, alma fonksiyonları ile ders isim ve kayıtlı öğrenci sayısını ekrana bastıran bir test uygulaması geliştiriniz.

  2. dikdortgen ve dikdortgenAlan isimli iki sınıf oluşturulacaktır.

    dikdortgen sınıfında;

    * int en
    * int boy

    değişkenleri ve 

    * int enAl()
    * int boyAl()
    * int enAyarla(int)
    * int boyAyarla(int)

    fonksiyonları bulunmaktadır. Al fonksiyonları değeri geri döndürmekte, ayarla fonksiyonları ise aldığı argümanı değişkenlere atamaktadır. Ayarla fonksiyonları girilen sayının 0’dan büyük, 1000’den küçük olmasını kontrol etmekte, doğru giriş alındıysa geriye 0, yanlış ise 1 döndürmektedirler.

    dikdortgenAlan sınıfında

    * int alanHesapla()

    fonksiyonu bulunmaktadır. Bu fonksiyon aldığı argümanları çarparak geri döndürmektedir.

    dikdörtgenAlan sınıfı dikdortgen sınıfından türetilmiştir.

    dikdortgenAlan sınıfından bir obje türetip, en ve boy değerlerini kullanıcıdan alarak sınıf değişkenlerine yazınız. En ve boy değişkenleri istenen aralıkta değilse, tekrar giriş yapmasını fonksiyondan dönen değere göre sağlayınız.

    alanHesapla fonksiyonunu çağırarak, hesaplanmış alanı ekrana bastırınız.

  3. Aşağıda birbirleri ile olan ilişkisi UML diyagramı olarak verilen sınıfları geliştiriniz.


    vadesizHesap ve vadeliHesap sınıfları, hesapBilgileri sınıfından türetilmiştir.hesapBilgileri sınıfındaki;

    paraYatir fonksiyonu, bakiye değişkeninin değerinin üzerine eklenerek güncellemektedir. Aldığı argüman 0’dan küçük ise kullanıcıya hata mesajı göstermelidir.

    vadesizHesap sınıfındaki;

    Constructor aldığı iki parametreyi, eksiBakiyeUcreti ve eksiBakiyeLimiti değişkenlerine yazmaktadır.

    paraCek fonksiyonu, bakiye değişkeninin değerinden eksilterek güncellemektedir. Aldığı argüman 0’dan küçük ise kullanıcıya hata mesajı göstermelidir. Ayrıca güncellenecek değer en fazla -eksiBakiyeLimiti kadar olabilir. -eksiBakiyeLimiti’den fazla olduğu durumda kullanıcıya hata mesajı göstermelidir.

    Örn. eksikBakiyeLimiti 2000 ise, kullanıcının bakiyesi -2000’den daha az olamaz.

    Eğer kullanıcının yapılan paraCek fonksiyonu ile bakiyesi 0’ın altına düşüyorsa, bakiyeden ayrıca eksiBakiyeUcreti’de çıkartılır.

    vadeliHesap sınıfındaki;

    Constructor aldığı parametreyi, yillikFaizOrani değişkenine yazmaktadır.

    faizOdemesiHesapla fonksiyonu çağrıldığında, faizOranına göre bakiye değişkenini artırmaktadır. Örn faiz oranı 11 ise, bakiye+= bakiye * 11 /100 yapılacaktır.

Çok Biçimlilik

  1. siralamaAlgoritmalari isiminde bir sınıf oluşturunuz.

    Bu sınıfın içerisinde public olarak;

    siralamaAlgoritmari constructor’u, constructor parametre almamaktadır. Sınıfta bulunan değişken hesaplamaAdimlari değerini 0’a atamaktadır.

    hesaplamaAdimlariniGetir fonksiyonu argüman almadan, geriye hesaplamaAdimlari integer değişkenini geriye döndürmektedir..

    selectionSortAlgoritması isminde bir sınıf tanımanacaktır. Bu sınıf siralamaAlgoritmalari sınıfından kalıtım yapılacaktır. Public olarak sirala fonksiyonu tanımlanacaktır. Bu fonksiyon liste alıp, geriye selection sort algoritması ile sıralanmış liste döndürecektir. Bu fonksiyonda selection sort algoritmasının kaç döngü adımında tamamlandığını sıralama işleminin sonunda sınıftaki hesaplamaAdimlari değişkenine yazmaktadır. 

    bubbleSortAlgoritmasi isminde bir sınıf tanımanacaktır. Bu sınıf siralamaAlgoritmalari sınıfından kalıtım yapılacaktır. Public olarak sirala fonksiyonu tanımlanacaktır. Bu fonksiyon liste alıp, geriye bubbleSort algoritması ile sıralanmış liste döndürecektir. Bu fonksiyonda bubbleSort algoritmasının kaç döngü adımında tamamlandığını sıralama işleminin sonunda sınıftaki hesaplamaAdimlari değişkenine yazmaktadır. 

    Main’de selectionSortAlgoritmasi ve bubbleSortAlgoritmasi sınıflarından birer obje türeterek, rasgele elemanlar doldurulmuş 100 elemana sahip bir listeyi objelerin sirala fonksiyonlarına besleyiniz. Fonksiyonlardan dönen sıralanmış vektörleri ekrana bastırınız ve objelerin hesaplamaAdimlariniGetir fonksiyonlarını çağırarak algoritmaların sıralamayı kaç adımda yaptığını ekrana bastırınız.
  2. amd, intel ve arm isminde üç sınıf oluşturunuz. Bu sınıflara public olaral flopsGucunuGetir fonksiyonu yazınız.

    amd sınıfında bu fonksiyon geriye 1 milyon,
    intel sınıfında geriye 2 milyon,
    arm sınıfında geriye 3 milyon

    döndürecektir. 

    Mainde 100 elemanlı bir liste oluşturarak, bu listenin ilk 50 elemanına amd sınıfından, 25 elemanına intel ve kalan 25 elemanına arm sınıfından türetilmiş objeleri atayınız. Tüm listeyi döngü ile tarayarak flopsGucunuGetir fonksiyonunu çağırarak bir integer değişkenin üzerinde toplayınız. Toplam sonucu, CPU’ların toplam gücü olarak ekrana bastırınız.
  3. petrol isminde bir sınıf oluşturunuz. Public olarak litreFiyati değişkeni vardır. Sınıfın constructor’unda aldığı bir argümanı bu değişkene yazmaktadır.

    karaAraci ve denizAraci isminde iki sınıf oluşturup bu sınıfları petrol sınıfından kalıtım yapınız. Sınıflara constructor tanımalayarak bir argüman alıp, aldığı argümanı kalıtım yaptığı petrol sınıfının constructor’u üzerinden litreFiyatı değişkenine yazmalıdır. Her iki sınıftada petrolFiyatiAl fonksiyonunu yazınız.

    karaAraci sınıfı için petrolFiyatiAl fonksiyonu litreyi gösteren bir argüman alıp, geriye litre * 1.70 * litreFiyati ile çarparak geriye döndürülmelidir.
    denizAraci sınıfı için petrolFiyatiAl fonksiyonu litreyi gösteren bir argüman alıp, geriye litre *litreFiyatı ile çarparak geriye döndürülmelidir.

    Mainde karaAraci ve denizAraci sınıflarından birer obje yaratarak, petrolFiyatiAl fonksiyonlarına 10 (kara aracı) ve 20 (deniz aracı) girişleri vererek dönen değeri ekrana bastırınız.
Categories
Object Oriented Design

Homeworks

ÖdevKonuTarihSon Teslim TarihiTeslim YöntemiİndirmeÇözüm
1Objeler ve Sınıflar13.11.202020.11.2020Yazılı Olarak Ders Sınıfında Teslim  
2Kalıtım20.11.202027.11.2020 Yazılı Olarak Ders Sınıfında Teslim  
3Çok Biçimlilik27.11.2020 04.12.2020Yazılı Olarak Ders Sınıfında Teslim  
4Dekoratörler11.12.2020 18.12.2020Yazılı Olarak Ders Sınıfında Teslim  
5Yazılım Testi08.01.202015.01.2020Yazılı Olarak Ders Sınıfında Teslim  
Categories
Object Oriented Design

Labs

LabKonuTarihİndirme
1Python Temelleri I23.10.2020 
2Python Temelleri II30.10.2020 
3Veri Koleksiyonları06.11.2020  
4Objeler ve Sınıflar13.11.2020 
5Kalıtım20.11.2020 
6Çok Biçimlilik27.11.2020 
7Tasarım Kalıpları I18.12.2020 
8Tasarım Kalıpları II25.12.2020 
9Refactoring08.01.2020
Categories
Object Oriented Design

Projects

Categories
Object Oriented Design

Tools

Araç AdıİçerikAdres
Otomatik Sınav SistemiBu araç ile çeşitli algoritma soruları sorulmakta ve cevapları otomatik olarak kontrol edilmektedir. Algoritma geliştirme kabileiyetini arttırmak için tasarlanmıştır.http://www.levent.tc/files/courses/tools/sinavsistemi
Categories
Object Oriented Design

Exams and Sample Questions

Vize

Final

Categories
Object Oriented Design

Feedback

Ders hakkında geri bildirimleriniz önemlidir.

Kayıtlı öğrencilerin her hafta geri bildirimleri için LMS sistemi üzerinden “Geri Bildirim Formu” açılacaktır. 

Her doldurulan geribildirim için 0.5 puan sene sonu notuna eklenecektir.

Anonim olarak geri bildirimde bulunmak için aşağıdaki linki kullanabilirsiniz.

https://docs.google.com/forms/d/e/1FAIpQLSd23R8gvWSKOiA5h3YC6Cdgq9iZ-En9I-5Y1wR9AwKhAXGaTA/viewform?vc=0&c=0&w=1

Categories
Object Oriented Design

LMS and Piazza

Öğrencilerin soru sorup yanıt alabileceği bir soru cevap sistemi sunulmaktadır. Ders duyuruları, öğrenci soruları ve cevapları için bir platformdur. Aşağıdan erişebilirsiniz. 

https://piazza.com/class/kdc28to4h0ehd

LMS (Learning Management System), bazı ödevlerin teslimi için LMS sistemi üzerinden olması istenecektir.

Categories
Object Oriented Design

Grades