Neden ben değil işlevleri sadece bir koleksiyon daha sınıfları kullanmak gerekir?

6 Cevap php

Possible Duplicate:
What are the benefits of OO programming? Will it help me write better code?
OO PHP Explanation for a braindead n00b

Sadece PHP sınıfları oluşturma ile oynarken ve ben dosyasına dahil işlevleri sadece bir koleksiyon ile yapılan aynı işi almak gibi what pain do they solve? görünüyor merak ediyorum / öğrenmeye başladı. Yani benim soru: Why should I use classes?

6 Cevap

Bu bir daha sezgisel, gerçek dünya şekilde kodunu görüntülemek için bir yoldur. (Birlikte bu veriler üzerinde veri ve olası tüm işlemleri paketlemek.) Ayrıca ne gerçekten aradığınız OOP avantajları kapsüllenmesini, soyutlama, veri saklamayı ... teşvik eder.

Nesne Tabanlı Programlama Üç Sütunu. Onları iyi öğrenin:

http://codeidol.com/csharp/learncsharp2/Object-Oriented-Programming/The-Three-Pillars-of-Object-Oriented-Programming/

Encapsulation

Nesne yönelimli programlama ilk ayağı kapsülleme olduğunu. Kapsülleme arkasındaki fikir, sen başka bir sınıfı etkilemeden bir sınıfın uygulanmasını değiştirmek, böylece, her tür veya sınıf sağduyulu ve kendi kendine yeten tutmak istiyor.

Specialization

Nesne yönelimli programlama, uzmanlaşma ikinci ayağı, miras yoluyla uygulanır; özellikle yeni bir sınıf varolan bir sınıf türemiştir ilan ederek. Özel sınıf daha genel sınıfının özelliklerini devralır. Daha genel bir sınıf bir temel sınıf olarak bilinir iken özel sınıf, türetilmiş bir sınıf denir.

Yerine başka bir türü kodu kesme ve yapıştırarak daha, türetilmiş bir tür ortak alanları ve yöntemleri devralır. Eğer paylaşılan bir yetenek taban sınıfta nasıl uygulanır değiştirirseniz, her türetilmiş bir tür kodu güncellemek zorunda değilsiniz; Onlar değişiklikleri devralır.

Polymorphism

Biçimlilik, farklı veri türlerinin değerleri standart bir arayüz kullanılarak ele alınması sağlar. Polimorfizm birincil kullanımı, uygun bir tip-spesifik davranışa göre aynı yöntem adı, alan veya özellik aramaları, her biri için yanıt vermek için, farklı tiplerine ait nesnelerin yeteneğidir. Programcı (ve programı) önceden nesne türünü tam olarak bilmek zorunda değildir, ve bu yüzden tam davranış çalışma zamanında belirlenir

Ayrıca bkz:

http://en.wikipedia.org/wiki/Polymorphism_in_object-oriented_programming

http://en.wikipedia.org/wiki/Type_polymorphism

Yani organizasyon - Temel olarak, sınıflar kodu ile veri koymak için izin verir.

Ayrıca, sınıfları "takipçileri" kodunuzu yeniden olmadan sınıfları özelleştirmek için izin değil, yeni kalıtsal sınıflar oluşturarak.

Her sınıf-tabanlı kod fonksiyonları ile yazılmış olabilir, ama bunu anlamak çok daha zor olurdu.

Bu doğru veri gizleme, endişeleri ayrılığı ve diğer bazı en iyi uygulamaları ile, kodunuzu daha ayrıntılı yapmak için bir yoldur.

IMO kodunuzu sadece işlevlerini kullanarak er ya da geç korumak ve genişletmek için zor-kod spagetti açar. Bu hataları düzeltmek için daha zor, sık sık kod çoğaltma çok var çünkü, yeni özellikleri uygulamak için onun zor.

Ayrıca kod tasarım polimorfizmi kullanamazsınız, böylece soyutlamalar ile çalışamaz.

sınıfları / object uygulama nesne yönelimli uygulama tasarım yoludur. Bu çok sayıda OOAD / OOP kitaplarında ayrıntılı kaplı.

Genellikle, kendi işlevlere bu dizi davranışını özelleştirebilirsiniz böylece. Genellikle konser çalışma işlevleri bir grup var.

Bu işlevleri kullanmak İnsanlar sadece bazı özel durum için bunlardan birini değiştirmek isteyebilirsiniz. Ya da belki fonksiyonları neden belli bir etkileşim zorlayan bir sınıf sağlar, ama ne olacak aslında do tanımlayabilirsiniz olamaz.

A basmakalıp örnek: bazı things üst üste değildi kontrol etmek için bazı kütüphane olsaydı düşünün.

class Comparator:
  def Greater(self, left, right): pass
  def Less(self, left, right): pass

def EnforceNoOverlap(self, comparator, left, right)
  assert comparator.Greater(left, right) != comparator.Lesser(left, right)