Bilmek istediğin her şeye ulaş

Nesne Yönelimli Programlama

Nesne yönelimli programlama (NYP), (İngilizce:Object Oriented Programming) özetle bir bilgisayar programlama yaklaşımıdır. Günümüzde pekçok çağdaş programlama dili tarafından desteklenmektedir. 1960'lı yılların sonuna doğru ortaya çıkan bu yaklaşım, o dönemin yazılım dünyasında beliren bir bunalımın sonucudur. Yazılımların karmaşıklığı ve boyutları sürekli artıyor, ancak belli bir nitelik düzeyi korumak için gereken bakımın maliyeti zaman ve çaba olarak daha da hızlı artıyordu. NYP'yi bu soruna karşı bir çözüm haline getiren başlıca özelliği, yazılımda birimselliği (modularity) benimsemesidir. NYP ayrıca, bilgi gizleme (information hiding), veri soyutlama (data abstraction), çok biçimlilik (polymorphism) ve kalıtım (inheritance) gibi yazılımın bakımını ve aynı yazılım üzerinde birden fazla kişinin çalışmasını kolaylaştıran kavramları da yazılım literatürüne kazandırmıştır. Sağladığı bu avantajlardan dolayı, NYP günümüzde geniş çaplı yazılım projelerinde yaygın olarak kullanılmaktadır. NYP'nın altında yatan birimselliğin ana fikri, her bilgisayar programının (izlence), etkileşim içerisinde olan birimler veya nesneler kümesinden oluştuğu varsayımıdır. Bu nesnelerin her biri, kendi içerisinde veri işleyebilir, ve diğer nesneler ile çift yönlü veri alışverişinde bulunabilir. Hâlbuki NYP'den önce var olan tek yaklaşımda (Yordamsal programlama), programlar sadece bir komut dizisi veya birer işlev (fonksiyon) kümesi olarak görülmektediler. Nesne yönelimli programlama dilleri yukarıda adı geçen tüm öğelere sahip olurken, Visual Basic gibi nesne tabanlı programlama dilleri birkaçından yoksundur.

Aralık 2014

Orhan Tutum, bir soruya yanıt verdi.

C#'ta javascript ile yüklenen dinamik HTML kaynak kodlarını nasıl çekeriz?

Gizli bir WebBrowser ile sayfayı tamamen yüklendikten sonra, içeriğini okumayı denemen senin işine yarar mı? Java scriptleri kendisi çalıştırabilir ve gerekli sayfayı oluşturabilir çünkü. (Java scriptler çalışmasında hata verirse bir ayar yapman gerek gerçi.)
Kasım 2014

Yavuz Gedik  yeni bir  gönderide  bulundu.

Yazılım Paradigması

Yazılım,elektronik cihazların çeşitli görevleri yerine getirebilmesi ve kendi aralarında haberleşmelerini sağlamaları için hazırlanmış (cihazların kullanımlarını geliştiren) makine komutlarıdır. Programlama, yaşadığımız gerçek dünyadaki problemlere ilişkin çözümlerin bilgisayarda ifade edilmesidir.

Yazılım Paradigması

Paradigma, bir bilim dalında zihinsel bir resmin, gerçekliğin algılanması, kavramsallaştırılmasını sağlayan modele denir. Programlama paradigmaları program yapma stili veya yoludur. Bazı diller bu işi kolaylaştırırken bazıları zorlaştırır. Programlama paradigması, programlama dilinin nasıl kullanılacağına dair mantıksal bir yaklaşımdır.

Emirsel Programlama Paradigması (Imperative)

Bir durum üzerine programlama ve durumu değiştiren komutlar üzerine kurulu bir paradigmadır. Emirsel ya da zorunlu programlar, bilgisayarın gerçekleştireceği sıralı komutları ifade eder. Hesaplamanın “nasıl? ” yapılacağı önemlidir. Bilgisayarın donanımına en uygun olan paradigmadır. Tüm bilgisayarın donanımı makine koduna uygundur. Makine kodları zorunlu programlama paradigmasını temel alır.

Emirsel (zorunlu) paradigmayı kullanan dillerden bazıları: C, Pascal vb.

Nesne Yönelimli Programlama Paradigması

Her programın etkileşim içerisinde bulunduğu birimler ve nesneler kümesinden oluştuğunu varsayan bir paradigmadır. 1960lı yıllarda donanım ve yazılımın karmaşıklaşmasıyla, yazılım kalitesinin korunabilmesi ve yeniden kullanılabilirliği artırmak için oluşturulmuştur. Bu paradigmanın temeli eylemler ve bu eylemlerin mantığından çok nesneler ve verilerdir. Nesneler metodlar (methods) ve nitelikler’den (attributes) oluşur. Nitelikler, nesnelerin sahip oldukları verilere, metodlar ise bunlar üzerinde yapılabilecek işlemlere karşılık gelir. Nesne, kendisini işleyecek kod kesimini kendisi ile birlikte tanımlayan ve taşıyan ve kendi tanımladığı biçimden daha farklı amaçlarla kullanılamayan veri türü olarak yorumlanabilir.

Nesne yönelimli paradigmayı kullanan dillerden bazıları: C++, C#, Java vb.

Kaynaklar
Ekim 2014

Erhan Küçükgüzel, bir soruya yanıt verdi.

Nesnelerin interneti (IoT: Internet of Things) hakkında ne biliyorsunuz?

IoT ile ilgili soru eski de olsa yanıt vermeye çalışayım. Sonuçta konu güncel, uzun süre de güncel kalacak.
Birçok nesnenin internete bağlandığı bir yapıdır. Artık evinizdeki buzdolabı, saksıdaki çiçek, arabanız, sıcaklık sensörünüz, herşey buna aday. Daha önceleri bu pek mümkün değildi ancak giderek hayatımıza girmeye başladı.
Internette her uç bir IP adresi sahibidir. IPv4 'e ait adresleme yöntemi az sayıda adres ürettiği için dünyada adresler tükenmek üzere... İnsanlar için bile yetersiz, nesneler için harcanamayacak kadar kıymetli. Tabi artık bu sorun IPv6 var. IPv6 ile dünyadaki kum tanesinden daha fazla farklı adres tanımlanabiliyor. Bu şekilde adres sorunu çözüldü. Ülkelerde de IPv6 altyapısı yaygınlaşıyor.
Teknoloji açısından da işler kolaylaşıyor. Tek başına ve ucuz maliyetle kablosuz haberleşen yarıiletken malzemeler var. Yani bir yandan da maliyet işi çözülüyor.
IoT ile trilyonlarca yeni internet bağlantılı uca ulaşılacak ve bunlardan muazzam miktarda meri transferi yaşayacağız. YouTube üzerinden güzel videolarla canlandırmalar ve anlatımlar dinlenebilir.
Temmuz 2014

Sadık Dereköy, bir soruya yanıt verdi.

Nesne tabanlı programlama dillerinin diğer programlama dillerinden farkı nedir?

En popüler olan dillerden Java ve C# nesneye dayalı programlama dilleridir. Yüksek seviyeli diller olup insan diline en yakın programlama dillleridir. Dolayısıyla öğrenmesi diğer programlama dillerine göre oldukça kolaydır.
Haziran 2014

Kadir Yılmaz, bir soruya yanıt verdi.

Nesne tabanlı programlama dillerinin diğer programlama dillerinden farkı nedir?

Şöyle düşün ;

Yakınından sana miras kalsa sevinmez misin :))
Haziran 2014

Ceyhun Çakar, bir soruya yanıt verdi.

Nesne tabanlı programlama dillerinin diğer programlama dillerinden farkı nedir?

Programları karmaşık bilgi yapıları olarak düşünebilirsin. Programlama temel paradigması karmaşıklığı nasıl yönettiğidir. Nesne tabanlı dillerde, program parçalarını nesneler olarak oluşturursun. Yani dilin temel birimi nesnedir. Bir dil için nesne tabanlı diyebilmek için üç temel özellikliğe (bu bazen daha katı tanımlanıyor ama başlangıç olarak bence bu üç özellik yeterlidir) sahip olması gerekir.

1. Kapsülleme (Encapsulation) : Tüm kod nesneler olarak birbirinden yalıtılabilmelidir (kısaca dilin bir nesne alt yapısı olmalıdır).

2. Miras (Inheritance) : Bir nesne (veya sınıf) bir diğerinden otomatik özellik alarak oluşturulmalı, yani nesneler arasında ata-çocuk ilişkisi kurabilmelidir.

3. Çokbiçimlilik: Bir ata (java interface'lerindeki gibi içeriği olmayan bir ata da olabilir). Çocuklarını temsil edebilmelidir (en yaygın şekli, ata referansına çocuk nesnesi atanabilmesi).

Diğer diller için aklıma gelenler:

Sıralı diller: Paradigma yoktur. Kod yukarıdan aşağıya çalışır. Dallanma üzerinde hiçbir denetim yoktur (Örnek: tüm assemly dilleri).

Yapısal Diller: Dilin temel birimi foksiyonlardır. Nesnelere izin vermezler. Dosyalarda bir üst birim olarak kullanılır (en ünlüsü C).

Declarative Diller: Konuşma dillerine benzerler. Birlerinin üstüne çıkan tanım ağaları şeklinde oluşurlar. Yapay zeka çalışmalırında yaygındırlar (Prolog'a bakarsanız yapıyı anlarsanız).
Daha fazla