Upgrade to Pro — share decks privately, control downloads, hide ads and more …

3. Workshop

3. Workshop

Avatar for EdirnePHP

EdirnePHP

May 03, 2017
Tweet

More Decks by EdirnePHP

Other Decks in Programming

Transcript

  1. 2 / 27 Programlama Yaklaşımları • Prosedür Yönelimli Diller (Fortran,

    Pascal) – Problemi alt parçalara bölerek parçaların birleştirilmesi. • Fonksiyon Yönelimli Diller (Lisp) – Kod tekrarının engellenmesi. • Mantık Yönelimli Diller (Prolog) – Mantıksal terimler kullanılarak algoritma geliştirme. • Nesne Yönelimli Diller (C++, C#, Java, PHP) – Nesneleri ve birbirleriyle etkileşim hâlinde olan nesneler sistemini tanımlamak.
  2. 3 / 27 Yazılım Geliştirme Aşamaları • Analiz – Yazılımın

    “ne yapacağı” belirlenir – Program hedefleri • Tasarım – Yazılımın “nasıl yapılacağı” belirlenir • Kodlama • Test • Bakım
  3. 4 / 27 Temel İlkeler • Sarmalama (Encapsulation) • Kalıtım

    (Inheritance) • Soyutlama (Abstraction) • Çok Biçimlilik (Polymorphism) bkz. s. 20 bkz. s. 21 bkz. s. 22 bkz. s. 23
  4. 5 / 27 UML (Unified Modelling Language) • UML –

    Yazılım mühendisliğinde nesneye yönelik sistemleri modellemede kullanılan açık standart olmuş bir görsel modelleme dilidir. • Model – Gerçek dünyadaki bir olayın veya sistemin soyutlanması, basitleştirilmesi ve kavramlaştırılmasıdır. • Modelleme – Bir sistemi incelemek üzere o sistemin basit bir örneğinin yapılmasıdır.
  5. 6 / 27 UML Diyagramları • Davranış Diyagramları – Use-Case

    (Kullanıcı Senaryosu) – Statechart (Durum) – Activity (Etkinlik)
  6. 7 / 27 • Yapısal Diyagramlar – Class (Sınıf) –

    Object (Nesne) – Component (Bileşen) – Package (Paket) – Deployment (Dağılım) – Composite Structure (Bileşik Yapı) UML Diyagramları
  7. 8 / 27 • Etkileşim Diyagramları – Sequence (Sıralama) –

    Communication (İletişim) – Interaction Overview (Etkileşime Bakış) – Timing (Zaman Akışı) UML Diyagramları
  8. 10 / 27 UML Diyagramları • Sınıf (Class) Diyagramı En

    üstte sınıf ismi bulunur. Özellikler (isteğe bağlı) Sınıfa ait tüm alanları içermelidir. Fonksiyonlar (isteğe bağlı)
  9. 11 / 27 UML Diyagramları • Sınıf (Class) Diyagramı ¡erişim_modu

    isim : tip [adet] = varsayılan değer ¡erişim_modu : + public ¡ # protected ¡ - private ¡ / türetilmiş ¡Statik alanların altı çizilir. ¡Türetilmiş özellik: Diğer özellikler kullanılarak üretilirler.
  10. 12 / 27 UML Diyagramları • Sınıf (Class) Diyagramı ¡erişim_modu

    isim (parametreler) : döndürülen_tip ¡erişim_modu: + public ¡ # protected ¡ - private ¡ ¡Statik fonksiyonların altı çizilir. ¡Parametre tipleri (isim: tip) şeklinde yazılır. ¡Yapıcı ve değer olarak void döndüren fonksiyonlarda döndürülen_tip yazılmaz.
  11. 13 / 27 UML Diyagramları • Sınıf (Class) Diyagramı •

    Genelleme (kalıtım ilişkisi) • Ortaklık (association – kullanma ilişkisi) – Bağımlılık (dependency) – Birliktelik (aggregation) – Birleşme (composition)
  12. 14 / 27 UML Diyagramları • Sınıf (Class) Diyagramı ¡Hiyerarşiler,

    yukarıdan aşağıya (genelden özele) çizilir. Sınıflar arası genelleme ilişkisi ise özelleşmiş sınıftan genel sınıfa çizilen içi boş okla gösterilir.
  13. 15 / 27 UML Diyagramları • Sınıf (Class) Diyagramı •

    1. Çokluk (multiplicity): kaç tane kullanıldığı •* Þ 0, 1 veya daha fazla •1 Þ 1 tane •2..4 Þ 2 ve 4 arasında •5..* Þ 5 veya daha fazla • 2. İsim: İlişkinin ismi • 3. Yönlülük (navigability)
  14. 16 / 27 ¨ Birliktelik: "is part of" (parçasıdır) ¨

    Birleşme: "is entirely made of“ (tamamen yapılmıştır) ¨ Bağımlılık: "uses temporarily” (geçici olarak kullanır) UML Diyagramları • Sınıf (Class) Diyagramı
  15. 17 / 27 UML Diyagramları • Sınıf (Class) Diyagramı Piyango

    Bileti Rastgele Sayı bağımlılık 1 1 Araba birliktelik Motor Sayfa Kitap birleşme * 1
  16. 18 / 27 UML Diyagramları •Sınıf (Class) Diyagramı Siparis -

    tarih : string - odendi : bool - siparisNo : long - sonrakiNo : long - tutar : float + gonder() + kapat() Musteri - isim : string - adres : string + knGetir(): string KurumsalMusteri - irtibatKisi : string - krediNotu: string - krediLimit : float + knGetir() : string BireyselMusteri - kartNo: long MalKalemi - miktar : int - tutar : float + knGetir(): string 1..* 1 0..*
  17. 19 / 27 PHP 5 ve NYP • Değişkenler (Özellik

    - Attribute) • Fonksiyonlar (Metot - Method) • Sınıflar (Class) • Arayüzler (Interface) • “new” anahtar sözcüğü • “this” anahtar sözcüğü – Sınıf özelliğine erişen değişken
  18. 20 / 27 Sınıflar (Classes) • Değişken örüntülerinden oluşan veri

    türleridir. class makaleler { var $kategori; var $baslik; var $yazar; var $yayin_tarihi; function __construct ($kategori, $baslik, $yazar, $yayin_tarihi){ $this->kategori = $kategori; $this->baslik = $baslik; $this->yazar = $yazar; $this->yayin_tarihi = $yayin_tarihi; } }
  19. 21 / 27 Sarmalama (Encapsulation) • Özellik/metotların erişim yapısının belirlenmesidir.

    • İlgili özellik/metoda sınıf dışından atama yapılamaz. • Erişim belirteçleri: – public : erişime açık özellikler/metotlar – private : sadece sınıf içi erişim – protected : kalıtım ile sınıflar arasında erişim
  20. 22 / 27 Kalıtım (Inheritance) • Bir sınıfın başka bir

    sınıftan türemesidir. • Türeyen sınıf, kendisinden türediği sınıftan özellik ve metotları miras alır. • “extends” anahtar sözcüğü ile sınıf türetilir.
  21. 23 / 27 Soyutlama (Abstraction) • İçinde en az bir

    soyut metot barındıran sınıf/nesnenin yerine getirmesi istenen temel işlevi metot düzeyinde belirlemek dışında ayrıntılara yer vermeyen yapılardır. • Soyut bir sınıfın yeni (new) bir örneği oluşturulamaz ve soyut sınıfı genişleten sınıflar, soyut sınıftaki metotları aşırı yüklemek (override) zorundadır.
  22. 24 / 27 Çok Biçimlilik (Polymorphism) • Farklı veri türleri

    değerleri düzgün bir arayüz kullanılarak ele alınması için izin veren bir programlama dili özelliğidir. • Özetle, aynı adlı bir metodun farklı sınıflar tarafından kullanılmasıdır.
  23. 25 / 27 Arayüz (Interface) • Soyut sınıflara (abstract classes)

    çok benzerler. • Gövdeli yordam barındırmazlar. • İçerdikleri metot ve özellikler public erişim belirtecine sahip olmak zorundadır.
  24. 26 / 27 Sihirli Metodlar (Magic Methods) •__constructor() •__destructor() •__call()

    •__callStatic() •__get() •__set() •__isset() •__unset() •__clone() •__toString() •__sleep() •__wakeup() •__invoke() •__set_state()
  25. 27 / 27 İstisna İşleme (Exception Handling) • İstisnalar, belirtilen

    bir hata oluşursa betiğin normal akışını değiştirmek için kullanılır. • İstisna işleme, belirtilen bir hata (istisnai) koşulu meydana gelirse kod yürütmesinin normal akışını değiştirmek için kullanılır. try{ ..... } catch(Exception $e){ $e->getMessage(); } getMessage(); getFile(); getLine(); getCode(); getPrevious(); getTrace(); getTraceAsString();