Nesneye yönelik programlama sözdizimi özellikleriyle ilgili değildir, kodlama ve tasarım felsefesi ile ilgilidir. Özünde, üzerinde hareket edecek rutinleri (veya bakış açınıza bağlı olarak mesajlara verilen yanıtları) belirtmek için gruplayan bir yapı olan bir nesne kavramı duruyor . OOP'un diğer önemli yönü kapsüllemedir : uygulama detaylarını opak yapılara sarmak ve bunları iyi tanımlanmış arayüzler aracılığıyla bağlamak. OOP teorisindeki hemen hemen her şey bu iki temel ilkeye dayanmaktadır.
Bu nedenle, nesneleri (hem veri hem de kod içeren varlıklar) ve kapsüllemeyi bir şekilde modelleyebilen herhangi bir dil OOP yapmak için kullanılabilir. Örneğin, C'de işlevleri yapılarda saklamak için işlev işaretçileri kullanabilir ve kapsüllemeyi gerçekleştirmek için üstbilgi / kaynak dosya sistemini kullanabilirsiniz. Uygun değil, ama OOP yapmak yeterlidir. Muhtemelen Haskell veya ML gibi bir şeyi OOP yapmak için bükebilirsiniz ve birisi montajda OOP yapmanın bir yolunu bulabilirse şaşırmam.
Bununla birlikte, pratik olarak, bir dil, açık nesne yönelimli programlama için eksiksiz bir sözdizimi özellikleri kümesi sağlıyorsa 'nesne yönelimli' olarak adlandırılabilir. Tipik olarak, bu, böyle bir dilin aşağıdakilere sahip olması gerektiği anlamına gelir: * bir nesne kavramı * yöntem çağırma veya mesaj iletme kavramı * nesne üyelerine erişimi kontrol etmenin rahat ve basit bir yolu * arayüzleri tanımlamanın rahat ve basit bir yolu
Sonuç olarak, OOP ilkelerine uyuyorsa ve kullanılabilir OOP sözdizimini kullanıyorsa, nesne yönelimli bir kod parçası çağırırdım.
BTW., Senin kod örneği muhtemelen yapar C sözdizimi çok açık yapmaz rağmen, kullanım polimorfizm ve sanal fonksiyonlar. SDL konusunda uzman değilim, ancak SDL_surface
her birinin kendine özgü uygulamaları olan çeşitli farklı yüzey türlerini temsil edebilmesini beklerdim - bir bellek bitmapine bir şey blitting ve bir ekran yüzeyine blitting radikal olarak farklı gerektirir ancak arabirim ( SDL_surface*
bağımsız değişken olarak alan işlevler ) aynı kalır. Tıpkı bunun gibi, kapsülleme de uygular: Bir yüzeyin temel temsiline doğrudan erişemezsiniz, bir işin nasıl ele alınacağını bilen işlevlerden geçmeniz gerekir SDL_surface
, çünkü sahip olduğunuz tek şey bu. C'de OOP'u nasıl yapacağınıza güzel bir örnek.