2011-01-01 20 views
6

Bu, OOP hakkında çok temel bir sorudur (python kullanıyorum ama gerçekten de bu, gerçekten bir dile özgü değil, kavramsal bir soru). Etrafa baktım ama bu özel soruyu kapsayan dersler veya kitaplar yok. Eğer belirsiz olduğum halde, özür diliyorum ve yazdığım her şeyi açıklığa kavuşturmaktan mutluluk duyarım.Başlangıç ​​seviyesinde OOP ve süreklilik ile ilgili kavramsal soru

Diyelim ki turşu kullanarak diske yazmak istediğim basit bir adres defteri oluşturuyorum. Ben __init__ bazı args (firstName velastName) alır Contact adında bir sınıf var ve siz, kişiler oluşturmak Onların böyle bir şey yapsın gördük OOP tüm örnekler için vb düzenleyebilirsiniz nerede ...

bir menü Yeni iletişim örnekleri oluşturmak için
bob = Contact('Bob', 'Smith') 
jane = Contact('Jane', 'Smith') 

. Ancak bunların hepsi çalışma zamanından önce tanımlanmıştır. Kullanıcı girdileri tarafından anında oluşturulan tüm bu örnekleri istediğimde ne olur? Her kişi için yeni örnekler oluşturuyor muyum? Bunu kullanıcı girişinden nasıl yaparım? O zaman tüm örnekleri bir listeye yazıp almayı mı? Ya da ... gibi bir şey yapacağız

firstName, lastName = raw_input("Enter first name: "), raw_input("Enter last name: ")  
contact = Contact(firstName, lastName) 

... sonra sadece listesine kişiyi eklemek ve iletişim örneğin bir kullanıcı eklemek istediğiniz her zaman yeni değerleri almak? Bu gerçekten anlamadığım önemli bir kavramdır (çünkü bunu gerçekten her yerde açıkladığını görmedim). Gördüğüm tüm örnekler, yukarıdakileri yapmıyorlar, bunun yerine her şey/kişi için yeni örnekler yaratıyorlar ama hepsi önceden tanımlanmış ve anında oluşturulmamış. Bu kavramın bana açıklanması için çok minnettar olurum.

cevap

1

Evet, genellikle böyle yaparsınız - nesnelerinizin dizilerini yapın. Veya dilinize ve/veya çerçevenize bağlı olarak başka koleksiyonlar. Yeni bir nesne oluştururken, önce bunu geçici bir değişkende oluşturun ve ardından koleksiyonunuza ekleyin.

Bazen, bir LOT nesneye sahip olduğunuzda, bunları kalıcı depolama alanınızdan (DB veya dosya gibi) bir kerede yüklemezsiniz. Çalışmanız gereken tek şey (veya birkaçını) yüklersiniz. Sadece bir tane yüklerseniz, özel bir değişken alabilir. Birkaç tane tekrar koleksiyon alacak.

+0

Girilen verileri örneğin adı yapmak için herhangi bir yer var mı? Yoksa bu tamamen gereksiz mi? Veya hatta mümkün mü? Söyleyecek bir şey düşünüyorum ... firstName = raw_input ("İlk adınız nedir ?:) lastName = raw_input (" Soyadınız nedir ?: ") eval (firstName) = İletişim (firstName, lastName) – johnharris85

+1

@JHarris - bu dile bağlı. PHP ve Javascript bunu yapabilirdi. C++/C# yapamadı. Ancak, bunun düşünmenin doğru yolu olduğunu düşünmüyorum. Kişilere isme göre bakmak istiyorsanız, "sözlük" (bazı dillerde "harita") koleksiyonu kullanın. Ad alanını bu gibi her bir kontakt için değişkenlerle kirletmek savurgan ve hatta tehlikeli olabilir (eğer birisi değişkeninizden biri gibi bir isimle bir kişi oluşturursa ne olur?) –

3

Örneğiniz tam olarak nasıl çalışıyor.

İlgili konular