Bilgisayar Kavramlarıwww.bilgisayarkavramlari.com |
Yazan : Şadi Evren ŞEKER Bu yazının amacı, nesne yönelimli programlama ortamlarında kullanılan bir tasarım kalıbı (design pattern) olan gözlemci tasarım kalıbını (observer design pattern) açıklamak ve kullanımına dair bir örnek vermektir. Nesne yönelimli olmayan programlama dillerinde (örneğin C) aynı yapı, geri çağırım (callback) ismi verilen yaklaşım ile yapılabilir. Konuya, klasik bir gözlemci tasarım kalıbını [...]
Çözüm : Şadi Evren ŞEKER Çözüme geçmeden önce, sizlerle görüşme imkanımız olmadığı için bir iki noktayı buradan açıklama ihtiyacı hissettim. Öncelikle, bilinmelidir ki bu sınavda sorulan bütün sorular, derste anlatılan konular kapsamında hazırlanmıştır. Bazı sorulara çözüm olabilecek derste birden fazla yol gösterilmiştir, buradaki cevaplarda bir tanesini seçip (genelde en uzun ve karmaşık olanını vermeye çalışıyorum) [...]
Yazan : Şadi Evren ŞEKER Bu yazının amacı, Java dilindeki vektör sınıfının kullanılmasını ve yapısını anlatmaktır. Java dilindeki vektörlerin yapısından bahsederek başlayalım. Klasik veri yapısı olarak dizilerin (array) ve bağlı listelerin (linked list) özelliklerini birleştirmiştir. Bir vektör boyutu belli olmadan tanımlanıp içerisine veri konuldukça hafızada kapladığı yeri arttırmaktadır. Bu anlamda bağlı listelere benzer özellik göstermektedir. [...]
Yazan : Şadi Evren ŞEKER Bu yazının amacı, java dilinde bulunan final kelimesini açıklamaktır. Temel olarak final kelimesi, java dilinde 3 farklı yerde bulunabilir: Sınıf tanımında Metot (fonksiyon) tanımında Değişken tanımında Sırasıyla bu durumları uygulamalar üzerinden görelim. public final class sonsınıf{ } yukarıdaki tanımın yapılması halinde, sınıf (class) nihai bir sınıf olur (final class) ve [...]
Yazan : Şadi Evren ŞEKER Bu yazının amacı, JAVA programlama dilinde bir sınıfın, birden fazla sınıftan nasıl miras aldığını anlatmaktır. Temel olarak JAVA dilinde doğrudan çoklu kalıtım (multiple inheritance) bulunmaz. Yani aşağıdaki gibi bir kod hatalıdır: public class bilgisayar_mühendisliğ_öğrencisi extends sayısal_öğrenci, üniversite_öğrencisi{ } Yukarıdaki tanıma göre bir bilgisayar mühendisliği öğrencisi hem üniversite öğrencisidir hem de [...]
Yazan : Şadi Evren ŞEKER Nesne yönelimli programlama dillerinde, sınıflar (class) arasında miras ilişkisi bulunması halinde (inheritance), bu sınıflardan türetilen nesnelerin birbirine akıtılması durumudur. Bu durumu aşağıdaki örnekler üzerinden anlamaya çalışalım: public class insan{ int boy; int kilo; } public class öğrenci extends insan{ int sınıf; String bölüm; } Örnek olarak verilen yukarıdaki iki sınıf [...]
Yazan : Şadi Evren ŞEKER Bu yazının amacı, nesne yönelimli programlama ortamlarında (object oriented programming) kullanılan iki temel kopyalama işlemini anlatmaktır. Literatürde bir nesnenin kopyalanması için geçen iki terim bulunur: Sığ kopyalama (shallow copying) Derin kopyalama (deep copying) Sığ kopyalama basitçe bir nesnenin referansını gösteren nesne atfının, farklı bir nesne atfına atanmasıdır. Örneğin aşağıdaki kodu [...]
Yazan : Şadi Evren ŞEKER Quiz soruları ve çözümleri aşağıdaki şekildedir: Bir oylama için program yazmanız isteniyor. Oylamaya katılan 5 aday bulunuyor ve bu adayların numarası (1′den 5′e kadar bir sayı) oy pusulasına yazılarak oy kullanılıyor. Programınızda 10 adet oyu okuyup ekrana adayların aldıkları oy miktarını basan bir program yazınız. Kullanılan oyun 1-5 arasında olmaması [...]
Yazan : Şadi Evren ŞEKER Bu yazının amacı, C++ dili için fonksiyon üzerine bindirme (function overriding veya method overriding) konusunu açıklamaktır. Üzerine bindirme işlemi, basitçe aralarında miras (inheritance) ilişkisi bulunan iki sınıf için kullanılabilir. C++ dilindeki, nesneler arasında kurulan bu ilişki modeli hakkında daha detaylı bilgi için, bu bağlantıya tıklayabilirsiniz. Öncelikle iki sınıf tanımlayıp bu [...]
Yazan : Şadi Evren ŞEKER C++ programlama dili, nesne yönelimli olmasından dolayı çok şekillilik (polymorphism) özelliğini destekler. Çok şekillilik (polymorphism) bir işin farklı şekillerle yapılabilmesidir. Örneğin bir metodun farklı şekillerde çağrılabilmesi, çok şekillik özelliği ile mümkündür. Bu yazıda, metotların ve işlemlerin (operators) üzerine yüklenmesi (overloading) anlatılacaktır. Amacımız bir fonksiyonu farklı şekillerde çalıştırabilmektir. Nesne yönelimli özelliği [...]
Yazan : Şadi Evren ŞEKER Bu yazının amacı, C++ dili için, nesneler arasında kurulabilecek olan ilişki tiplerini açıklamaktır. Temel olarak bir nesne kendi özellikleri ve metotları bulunan bir varlıktır. Nesne yönelimli programlama modelinde, nesnelerin özelliklerini paylaşmak veya diğer nesnelerin metotlarına erişmek için birbirleri ile iletişime girmeleri gerekir. Bu anlamda inceleyeceğimiz 4 temel ilişkiden bahsedebiliriz. Bu [...]
Yazan : Şadi Evren ŞEKER Bu yazının amacı, C++ dili üzerinden, bazı sınıf ve nesne ilişkilerini anlatmaktır. Örnek olarak, aşağıda, şekli verilen diyagramı ele alalım: Yukarıdaki bu şekilde, köşeli kutular içerisinde yazılan bilgiler, sınıf (class) bilgileridir. Yuvarlak köşeli kutular içerisinde ise, bu sınıflardan türetilmiş nesneler (objects) görülmektedir. Son olarak kalın ok, ISA ilişkisini, yani miras [...]
Yazan : Şadi Evren ŞEKER DOM yani İngilizcedeki Document Object Modelling veya Türkçe karşılığı ile Doküman Nesne Modellemesi basitçe bir işaretleme dili (genellikle HTML veya XML gibi bir dil) için etiketlere (tags) erişmeyi sağlayan bir erişim yöntemidir. Günümüzde SAX ve DOM en yaygın olarak kullanılan erişim yöntemledir. SAX daha çok tek seferde işlenen ve ardışık [...]
Yazan : Şadi Evren ŞEKER Bilgisayar bilimlerinde özellikle yazılım mühendisliği (Software engineering) konusunda kullanılan ve bileşen (component) ve mesaj (message) temelli yazılım geliştirmeyi amaçlayan bir üsluptur. C2 tasarım kültüründe yazılım bileşenler şeklinde ele alınır ve yazılımı oluşturan bu bileşenler üzerinden bir ağ (network) çizilir. Bu ağda bileşenler arası haberleşme gösterilir. Bu sayede tasarlanan bir bileşenin [...]
Yazan : Şadi Evren ŞEKER Bilgisayar bilimlerinde kullanılan bir yaklaşım olan nesne yönelimli programlama (object oriented programming) sayesinde gelişmiş olan bir kavramdır. Basitçe bir nesnenin (object) hafızada (RAM) olan bilgilerinin saklanmak veya ağ üzerinden yollanmak gibi amaçlarla bir dizgiye (string) dönüştürülmesi işlemidir. Bu dizginin yapısı olarak çoğunlukla XML dili kullanılır. bu sayede verinin içeriğini belirleyen [...]
Yazan : Şadi Evren ŞEKER Fabrika metotları tanım itibariyle sabit metotlardır (static methods). Yani bir fabrika metodu (factory method) çağrılmak için bir nesneye ihtiyaç duymaz, doğrudan sınıfa (Class) erişilerek çağrılabilir. Fabrika metotları bunun yanında değer olarak bir nesne döndüren metotlardır. Yani bir fabrika metodu çağrıldığında dönüş değeri olarak bir sınıftan türetilmiş bir nesne beklenir. Bu [...]
Yazan : Şadi Evren ŞEKER Nesne yönelimli programlamada kullanılan bir terimdir. Basitçe bir nesnenin (object) çalışabilmesi , yaşayabilmesi için bu nesnenin tanımlı olduğu bir sınıfa (class) ihtiyaç vardır. Ayrıca bu sınıftan (class) tanımlanan nesnenin programlama dili ve işletim sistemi marifetiyle hafızada bir alana ihtiyacı vardır. Bilindiği üzere nesnelerin tanımlı oldukları sınıflar (class) içerisinde özellikleri (properties) [...]
Yazan : Şadi Evren ŞEKER Bağlam yönelimli (aspect oriented) programlamada kullanılan terimlerdendir. Anlam olarak programda bulunan bir kontrol noktasının bir veya daha fazla bağlamın etkisinde olduğu nokta demektir. Bu anlamda bir kodda bulunan bütün satırlar birleşim noktası (joinpoint) olabilir ancak bu yaklaşım bağlam yönelimli programlama açısından doğru olmaz. Daha doğrusu bütün olası birleşme noktalarından en [...]
Yazan : Şadi Evren ŞEKER Bilgisayar bilimlerinde yazılım geliştirme sürecinde kullanılan yaklaşımlardan birisi de bağlam yönelimli programlamadır (Aspect oriented programming). Bu yaklaşım, yazılım geliştirme yaklaşımları sıralasında nesne yönelimli programlamadan sonra gelmektedir. Yani bir anlamda her bağlam yönelimli programlama yaklaşımı aslında bir nesne yönelimli programlama yaklaşımını kapsar. Nesne yönelimli programlama yaklaşımından farklı olarak bağlam yönelimli programlama [...]
Yazan : Şadi Evren ŞEKER Bilgisayar bilimlerinin birinci derece uğraştığı varlık veridir. Yani bilgisayar bilimlerinde yapılan her işi bir bakışa göre veriyi işlemek olarak görmek mümkündür. İşlenen bu verinin bütünlüğü ise ayrı bir problemdir. Veri bütünlüğü ile genelde verinin birden fazla parçaya bölünmesi durumunda bu parçaların bütün olarak tutulması kastedilir. Veri’nin bölünmesi ne zaman gerekir [...]
Yazan: Şadi Evren ŞEKER Latince bölünemez anlamına gelen atom kökünden üretilen bu kelime, bilgisayar bilimlerinde çeşitli alanlarda bir bilginin veya bir varlığın bölünemediğini ifade eder. Örneğin programlama dillerinde bir dilin atomic (bölünemez) en küçük üyesi bu anlama gelmektedir. Mesela C dilinde her satır (statement) atomic (bölünemez) bir varlıktır. Benzer şekilde bir verinin bölünemezliğini ifade etmek [...]
Yazan : Şadi Evren ŞEKER SableCC 1998 yılında Étienne Gagnon tarafından bir yüksek lisans tezi olarak hazırlanmış ve dil geliştirmekte kullanılan, JAVA üzerinde çalışan, nesne yönelimli bir geliştirme ortamıdır. Temel olarak SableCC üzerinde bir dil geliştirmek için aşağıdaki adımların takip edilmesi gerekir: Dilde bulunacak olan kelimeler (lexicons) için bir kelime tanımı (lexical definition) yapılmalıdır. Tanım [...]
Yazan : Şadi Evren ŞEKER Bilgisayar grafiklerinde nesneleri modellemek için kullanılan yapılardan birisidir. Buna göre modelleme işlemi için bir veri ağacı kullanılır ve bu veri ağacının her üyesi bir nesneden oluşur. Bu sayede nesneler arasındaki bağlantı tutulabileceği gibi nesneler gruplanarak daha üst nesne tanımları elde edilmiş olur. Örneğin aşağıdaki araba modelini ele alalım: Yukarıdaki ara [...]
Yazan : Şadi Evren ŞEKER Yazılım mühendisliğinde sıkça kullanılan tasarım kalıplarının bir kütüphane haline getirilmesi ve bu kütüphanenin ileriki projelerde kullanılmasıyla proje gelitşrime sürelerinin kısaltılması hedeflenmektedir. Bu kütüphane (design patterns library) genelde farklı yapılar içerebilmesine karşılık aşağıdaki gruplarda toparlanabilir: Web tasarım kalıpları (web design patterns) UML tasarım kalıpları (UML Design patterns) Grafik arayüzü tasarım kalıpları [...]
Yazan : Şadi Evren ŞEKER Dağıtık programlamanın bir parçası olan RPC( Remote Procedure Call ) üzerine inşa edilmiş olan ve nesne yönelimli programlama akımıyla birlikte gelişmiş olan RMI yaklaşımı basitçe bir kodun bir parçası olan methodun başka bir kod tarafından çağrılmasını sağlar. Temel olarak sistemde rmiregistry ismi verilen bir kayıt üzerinde RMI için çağrılması uygun [...]