Geliştirme döngüsünde nerede durduğunuza bağlıdır, ancak bazen bir algoritma çizerken, karmaşık blokları hemen uygulamadan soyutlama yapmak istersiniz.
def full_algo():
init_stuff()
process_stuff()
...
Nasıl init_stuff
çalışacağını biliyorsunuz , kafanızda oldukça basit ama hemen buna ihtiyacınız yok, bu yüzden boş bir işlev olarak ilan ediyorsunuz. Kodunuzun kanlı ayrıntılarla uğraşmadan derlenmesini ve çalışmasını sağlar.
Serbest bırakılan uygulamalar için başka bir kullanım, kalıtım kullanılır. Platforma özgü kodun davranışını tanımlayan büyük bir sınıfınız olduğunu varsayalım. Buna benzer bir mantık ortaya çıkabilir:
init_filesystem();
access_files();
release_filesystem();
Bu kod birçok platformda çalışır, ancak bazı platformların dosya sistemi başlatılmasına gerek olmayabilir. O zaman mirasınız şöyle görünecektir (C ++ 'da = 0 ile sanal olarak türetilmiş sınıfların bu yöntemleri uygulaması ZORUNLUDUR):
class FileSystem{
virtual void init_filesystem() = 0;
virtual void access_files() = 0;
virtual void release_filesystem() = 0;
};
O zaman bu sınıfın (arayüz) belirli bir uygulaması bu yöntemlerden bazıları için hiçbir şey yapamaz. Alternatif olarak, temel sınıf, init / release için sanal olarak tanımlamak yerine boş yöntemler bildirebilir.
Sonunda (ve utanç verici bir şekilde), bazen çok eski bir uygulamayı sürdürürsünüz. Yöntemleri silmenin bazı şeyleri kıracağından korkuyorsunuz. Bu, düzgün bir şekilde anlaşılmayan karmaşık kalıtımınız olduğunda veya çok sayıda işlev işaretçisi (geri aramalar) olduğunda olur. İçlerindeki kodu silersiniz, böylece hiçbir şey kırmadan yine de çağrılırlar.