Bölüm 12. Nesne yönelimli programlama desteği

Benzer belgeler
Bölüm 11. Soyut veri tipleri ve kapsülleme kavramları ISBN

İsimler ve Kapsam. 24 Şubat Programlama Dilleri - Pamukkale Üniversitesi 1

Bölüm 9. Altprogramlar ISBN

İsimler ve Kapsam. Hafta 4 Ders 2 BLG339 PROGRAMLAMA DİLLERİ KAVRAMI

Bölüm 10. Altprogramların gerçeklenmesi ISBN

Java da Soyutlama ( Abstraction ) ve Çok-biçimlilik ( Polymorphism )

Görsel Programlama DERS 02. Görsel Programlama - Ders02/ 1

abstract Sınıflar 1 Sınıf sınıf1 new class Ama aşağıdaki şekilde referans alınabilir;

Mühendislik Fakültesi Elektrik-Elektronik Mühendisliği C Programlama 7. Bölüm Metot Tanımlama ve Kullanma

Kalıtım (Inheritance)

Önemli noktalar. Paradigma Nesnelere Giriş Mesajlar / Ara bağlantılar Bilgi Gizleme (Information Hiding ) Sınıflar(Classes) Kalıtım/Inheritance

BTEP243 Ders 3. class Yazım Kuralı:

Bölüm1. İlk Bilgiler ISBN

C++ Dersi: Nesne Tabanlı Programlama

Arayüz (Interface) Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 7 1

public static int Toplam int x, int y

1 PROGRAMLAMAYA GİRİŞ

NESNEYE YÖNELİK PROGRAMLAMA

YZM 2116 Veri Yapıları

Sunum İçeriği. Programlamaya Giriş

Ders 8 Konu Özeti ve Problemler

C++ Dersi: Nesne Tabanlı Programlama

Arayüz soyut metotların oluşturduğu bir koleksyondur. Bir sınıf arayüzü çalıştırırken arayüzün sahip olduğu soyut metotları da miras alır.

BİL-141 Bilgisayar Programlama I (Java)

Doğu Akdeniz Üniversitesi Bilgisayar Mühendisliği Bölümü. BLGM 318 Ara Sınavı Đlkbahar Dönemi 13 Nisan Ad, Soyad Öğrenci No.

NESNEYE YÖNELİK PROGRAMLAMA Temel Kavramlar

Sınıflar ve Yapılar Arasındaki Farklılıklar. Değer ve Referans Türde Olan Aktarımlar

NESNEYE YÖNELİK PROGRAMLAMA

Bölüm 11. Soyut Veri Tipleri ve Kılıflama (sarmalama) Kavramı Abstract Data Types and Encapsulation Concepts

Bölüm 15. Fonksiyonel Programlama Dilleri ISBN

NESNE YÖNELİMLİ PROGRAMLAMA HAFTA # 9

Yrd. Doç. Dr. Caner ÖZCAN

YZM 2105 Nesneye Yönelik Programlama

ALGORİTMA VE PROGRAMLAMA I

Nesne Yönelimli Programlamaya Giriş - 2. Cem Ahmet MERCAN 16/04/2009

ALGORİTMA VE PROGRAMLAMA I

Görsel Programlama DERS 01. Görsel Programlama - Ders01/ 1

ANA SINIF TÜRETİLEN BİRİNCİ SINIF TÜRETİLEN İKİNCİ SINIF

NESNE YÖNELİMLİ PROGRAMLAMA HAFTA # 7

Bölüm 7. İfadeler ve atamalar ISBN

Yrd. Doç. Dr. Caner ÖZCAN

Görsel Programlama DERS 03. Görsel Programlama - Ders03/ 1

HSancak Nesne Tabanlı Programlama I Ders Notları

BMH-303 Nesneye Yönelik Programlama

Sınıf Diyagramları Amaç: Sınıf Diyagramları Nasıl Çizilir?

Bölüm 2. Ana programlama dilerinin evrimi ISBN

SINIF YAPISI ve NESNE YÖNELİMLİ PROGRAMLAMA NESNE YÖNELİMLİ PROGRAMLAMA

Java Dersi. Altuğ Bilgin Altıntaş

NESNEYE YÖNELİK PROGRAMLAMA SINIFLAR

BMH-303 Nesneye Yönelik Programlama

Bölüm 10. Altprogramları Uygulamak

BİL-142 Bilgisayar Programlama II

Eclipse, Nesneler ve Java 2 Java Nereden Çıktı? 2

Nesne Yönelimli Programlama

Bilgi ve İletişim Teknolojileri (JFM 102) Ders 10. LINUX OS (Programlama) BİLGİ & İLETİŞİM TEKNOLOJİLERİ GENEL BAKIŞ

YZM 2105 Nesneye Yönelik Programlama

Nesneye Yönelik Programlama (OOP) 7.Hafta

NESNEYE YÖNELİK PROGRAMLAMA

5.HAFTA. Sınıf ve Nesne Kavramı, Metot Oluşturma, Kurucu Metot, this Deyimi

Bölüm 9. Altprogramlar ISBN

Şekil 1 de dört adet genel kullanıma açılmış veri (D1-D4) ve bunları doğrudan ya da dolaylı olarak kullanan 7 adet yordam (P1-P7) yer almaktadır.

Java Programlamada Paket Yapısı Ve Import

Java C.Thomas Wu 2004b kitabından Türkçeleştirilerek ve örneklendirilerek hazırlanmıştır.

Bölüm 5. İsimler, Bağlamalar, Tip Kontrolü, Etki Alanları ISBN

Bölüm 5. İsimler, Bağlama, Tür Kontrolü ve Kapsam(Etki Alanı) ISBN

Nesne tabanlı programlama nesneleri kullanan programlamayı içerir. Bir nesne farklı olarak tanımlanabilen gerçek dünyadaki bir varlıktır.

BLM 112- Programlama Dilleri II. Hafta 5 İşaretçiler (Pointers)

PROGRAMLAMAYA GİRİŞ FONKSİYONLAR

Göstericiler (Pointers)

Sınıf üyeleri: değişkenler (fields) and metotlar (methods) Değişkenler: nesne içerisindeki değişkenlerdir Temel veri tipi veya sınıf tipi

Bağlama (Binding) Kavramı

BLM-112 PROGRAMLAMA DİLLERİ II. Ders-3 İşaretçiler (Pointer) (Kısım-2)

Üst Düzey Programlama

FONKSİYONLAR. Gerçek hayattaki problemlerin çözümü için geliştirilen programlar çok büyük boyutlardadır.

Program Nedir? Program, bir problemin çözümü için herhangi bir programlama dilinin kuralları ile oluşturulmuş komut kümesidir.

Paket Erişimleri. Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 4 1

Konular. Hafta 5 Veri Tipleri (Devam) BLG339 PROGRAMLAMA DİLLERİ KAVRAMI

Java Class Yapısında Finalize Metotunun Kullanımı

Polimorfizm. Altuğ B. Altıntaş 2003 Java ve Yazılım Tasarımı - Bölüm 6 1

C# Programlama Dili. İlk programımız Tür dönüşümü Yorum ekleme Operatörler

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

İfadeler bir programlama dilinde hesaplamaları belirtmede temel araçtır. İfadelerin değerlendirmesini anlamak için,

Çok Şekillilik (Polymorphism)

Yazılım Kodlama ve İ simlendirme Standartları v1.0

Erişim konusunda iki taraf vardır:

C++ Dersi: Nesne Tabanlı Programlama

BLM-111 PROGRAMLAMA DİLLERİ I. Ders-12 Fonksiyonlar. Yrd. Doç. Dr. Ümit ATİLA

Chapter 8. Komut düzeyi kontrol yapıları ISBN

Decorator Tasarım Şablonu

Programlama Dillerinde Kullanılan Veri Tipleri

Bilgisayar İşletim Sistemleri BLG 312

Java Temel Özellikleri

Nesne Yönelimli Programlama ve Kalıtım

Lecture 11: Generics

C++ ile Nesneye Dayalı Programlama

Facade (Cephe) Tasarım Şablonu KurumsalJava.com

Uzaktan Eğitim Uygulama ve Araştırma Merkezi

BBS515 Nesneye Yönelik Programlama. Ders 1 Zümra Kavafoğlu

Bu parçalar arasındaki ilişkiyi kullanıp büyük çaplı programlar geliştirme tekniğine de nesne yönelimli programlama denir.

ALGORİTMA VE PROGRAMLAMA II

Transkript:

Bölüm 12 Nesne yönelimli programlama desteği

12. Bölüm konuları Giriş Nesne yönelimli programlama Nesne yönelimli diller için tasarım konuları C++ dilinde nesne yönelimli programlama desteği Nesne yönelimli programlama yapılarının gerçeklenmesi Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ, Magosa, KKTC 1-2

Giriş Çok sayıda nesne yönelimli programlama (NYP) dili var: Bazıları prosedürel programlamayı destekler (ör: Ada 95+ ve C++) Bazları fonksiyonel programlamayı destekler (ör: CLOS - Common Lisp Object System) Yeni diller (ör: Java ve C#) başka paradigmaları desteklemez ama onların komutsal yapılarını kullanır Bazıları saf NYP dilidir (ör: Smalltalk, Ruby) Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ, Magosa, KKTC 1-3

Nesne yönelimli programlama Üç ana özellik gerektirir: Soyut veri tipleri Kalıtım NYP nin ana teması Polimorfizm Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ, Magosa, KKTC 1-4

Kalıtım Tekrar kullanımdan kaynaklanan verimlilik artışı sağlar SVT lerin özelleştirlerek tekrar kullanımı kod değişikliği gerektirir ve zahmetlidir Kalıtım, yeni sınıfları varolan sınıflara dayalı olarak tanımlar Varolan sınıfların hem yapısı, hem de işlevselliği kalıtım yolu ile alınabilir, ve yeni sınıf içinde değiştirilebilir Tekli çoklu kalıtım Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ, Magosa, KKTC 1-5

Nesne yönelimli kavramlar SVT ler sınıflar (classes) aracılığı ile gerçeklenir Sınıf örneklerine nesne (object) denir Kalıtım yoluyla tanımlanan bir sınıfa türemiş sınıf (derived class) veya altsınıf (subclass) denir Kendisinden türeyen sınıf olan sınıfa baba (parent) sınıf veya üstsınıf (superclass) denir Nesneler üzerinde işlemler tanımlayan altprogramlara metod (methods) denir Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ, Magosa, KKTC 1-6

Nesne yönelimli kavramlar... Metod çağırmaya mesaj göderme denir Bir nesnenin tüm metodlarının tümüne birden o nesnenin mesaj protokolü (message protocol ) veya mesaj arayüzü (message interface) denir. Mesajların iki kısmı olur: metod ismi ve mesajin gideceği hedef nesne En basit durumda, bir sınıf babasının tüm özelliklerini kalıtım yolu ile alır Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ, Magosa, KKTC 1-7

Nesne yönelimli kavramlar... Kalıtım, erişim kontrolleri nedeniyle karmaşık hale gelebilir Sınıf, içindeki varlıkları altsınıflardan saklayabilir Sınıf, içindeki varlıkları kullanıcılardan (clients) saklayabilir Sınıf, içindeki varlıkları altsınıflara gösterebilir ama kullanıcılardan saklayabilir Sınıflar, kalıtımla aldıkları metodları değiştirebilirler Yeni metod eskisini hükümsüz kılar (overrides ) Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ, Magosa, KKTC 1-8

Nesne yönelimli kavramlar... Bir altsınıf üç şekilde babasından farklılık gösterebilir: 1. Üstsınıftaki özel (private) değişken veya metodları göremez 2. Altsınıf, üstsınıfta olmayan değişken ve/veya metodlar ekleyebilir 3. Altsınıf, kalıtımla aldığı metodların davranışını değiştirebilir. Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ, Magosa, KKTC 1-9

Nesne yönelimli kavramlar... Sınıf içinde iki tür değişken var: Sınıf değişkenleri (class variables) bu tür değişkenlere bir kez yer ayrılır Örnek değişkenleri (instance variables) her nesne içinde yer ayrılır Sınıf içinde iki tür metod var: Sınıf metodu (class method) sınıfa gelen mesajları kabul eder Örnek metodu (instance method) nesneye gelen mesajları kabul eder Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ, Magosa, KKTC 1-10

Sınıf metodları Sınıfa gelen mesajları kabul eder Normal fonksiyonlar gibidirler, ancak sınıfa aittirler. Sınıf dışından SınıfAdı.metodAdı(...) olarak çağrılırlar Sınıf içinden sadece metodadı(...) olarak çağrılırlar (Sentaks bir dilden diğerine değişebilir) Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ, Magosa, KKTC 1-11

Örnek metodları Nesneye gelen mesajları kabul eder Derleyici tarafından, fazladan bir parametre alan fonksiyona dönüştürülür. Bu fazladan parametre, mesajı alan nesneyi gösteren bir işaretçidir. Örneğin m, C sınıfı içinde void m(int a){ } olarak tanımlı bir örnek metodu olsun. obj bir C sınıfı örneği olsun Derlerici bu tanımı void m(c * this, int a){.} şeklinde değiştirir obj.m(5) ise m(&obj, 5) şekline dönüştütülür. Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ, Magosa, KKTC 1-12

Dinamik bağlama Polimorfik değişken (polymorphic variable) bir sınıfın örneklerine ve o sınıfın atası olduğu (o sınıftan inen) tüm sınıflarının örneklerine işaret edebilir Polimorfik değişken aracılığı ile erişilen nesnelerde metod bağlaması dinamik olur (nesnenin sınıfına ait olan metod kullanılır; eğer yoksa, en yakın kalıtımla elde edilen metod çağrılır) Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ, Magosa, KKTC 1-13

Soyut sınıflar ve metodlar Soyut metod (abstract method) tanımı olmayan metoddur (sadece protokolü tanımlar) Soyut sınıf (abstract class) en az bir tane soyut metodu olan sınıftır Soyut sınıfın örneği yaratılamaz Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ, Magosa, KKTC 1-14

NYP dilleri tasarım problemleri Sadece nesneler mi olmalı? Altsınıflar alttipler mi? Tekli-çoklü kalıtım Nesne için yer alınması ve geri verilmesi Dinamik/Statik bağlama İçiçe sınıflar Nesnelerin ilklenmesi Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ, Magosa, KKTC 1-15

Sadece nesnelerin olması Herşey nesne (ör. integer bile) Avantajı zarafet ve saflık Dezavantajı- basit nesneler üzerindeki işlemeler yavaş Örnek dil: Smalltalk Varolan tip sistemine nesneler eklenmesi Avantajı - basit nesneler üzerindeki işlemeler hızlı Dezavantajı kafa karıştıran tip sistemi (iki tür varlık: nesneler ve kayıtlar (recordlar)) Örnek dil: C++ Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ, Magosa, KKTC 1-16

Sadece nesnelerin olması Basit tipler için komutlu diller tarzında tip sistemi kullan, onların dışındaki herşey nesne olsun Avantajları basit nesneler üzerindeki işlemeler hızlı Nispeten küçük bir tip sistemi Dezavantajı yine kafa karıştıran tip sistemi Örnek dil: JAVA Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ, Magosa, KKTC 1-17

Altsınıflar altipler midir? Alt sınıfa ait bir nesneyi bir üst sınıfa ait diye düşünebilir miyiz? Öyle ise, altsınıf sadece yeni değişkenler ve metodlar ekleyebilmeli, kalıtım yolu ile aldığı metodları da ancak uyumlu bir şekilde değiştirmeli Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ, Magosa, KKTC 1-18

Tekli ve çoklu kalıtım Çoklu kalıtım: birden çok sınıftan kalıtım alma (inherit) Çoklu kalıtımın dezavantajları Dil ve implementasyon karmaşıklığı (kısmen isim çakışmalarından dolayı) Olası verimsizlik dinamik bağlama maliyeti daha fazla Avantajı: Bazen işleri kolaylaştırıyor Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ, Magosa, KKTC 1-19

Dinamik ve statik bağlama Mesajların hepsinin metodlara bağlanması dinamik olmalı mı? Dinamik bağlama hiç yoksa, dinamik bağlamanın avantajları yok olur Hepsi dinamikse, verimlilikten kaybeder (ör: Smalltalk, JAVA) Kullanıcıya kalmış (C++) Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ, Magosa, KKTC 1-20

Smalltalk dilinde NYP desteği Smalltalk saf bir NYP dilidir Herşey nesne Her nesnenin yerel hafızası var Tüm hesaplama nesnelerin birbirine mesaj göndermesiyle olur Komutlu dillere hiç benzemez Tüm nesneler yığın üzerinde yaratılırlar Alınan yerin geri verilmesi (deallocation) otomatik olarak gerçekleşir Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ, Magosa, KKTC 1-21

Smalltalk dilinde NYP desteği... Kalıtım Altsınıf, üstsınıfın tüm örnek değişkenlerini, örnek metodlarını ve sınıf metodarını kalıtımla alır Tüm altsınıflar alttiplerdir (hiçbirşey altsınıftan saklanamaz) Sadece tekli kalıtım Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ, Magosa, KKTC 1-22

Smalltalk dilinde NYP desteği... Dinamik bağlama Mesajların metodlara bağlanması tümüyle dinamik Mesajı alan nesnenin sınıfından başlayarak yukarıya doğru metodu ara Dinamik tip kontrolü var Tek tip hatası : mesaj anlaşılmadı Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ, Magosa, KKTC 1-23

Smalltalk dilinde NYP desteği... Smalltalk değerlendirmesi Dilin sentaksı basit, yalın ve düzgündür Küçük bir dilin ne kadar güçlü olabileceğine örnek Derlenmiş dillere göre daha yavaş Dinamik bağlamadan dolayı tip hatalarının keşfedilmesi çalışma zamanına kalır Grafik arayüz kullanımında öncü En büyük etkisi: NYP nin gelişmesi ve ilerlemesi Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ, Magosa, KKTC 1-24

C++ dilinde NYP desteği Genel özellikleri: C ve SIMULA 67 dillerinden evrimleşti En çok kullanılan NYP dilleri arasında Karışık (mixed) tip sistemi Yapıcılar (constructors) ve yıkıcılar (destructors) var Sınıf varlıklarına detaylı erişim kontolleri Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ, Magosa, KKTC 1-25

C++ dilinde NYP desteği... Kalıtım Bir sınıf herhangi başka bir sınıfın alt sınıfı olmak zorunda değil Erişim kontrol komutları Private (sadece sınıf içinde ve dostlar tarafından görünebilir) (altsınıfların alttip olmasını engeller) Public (altsınıflarda ve kullanıcılar (clients) tarafından görülebilir) Protected (sınıf içinde ve altsınıflarda görülebilir, ama kullanıcılar (clients) tarafından görülemez) Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ, Magosa, KKTC 1-26

C++ dilinde NYP desteği... Çoklu kalıtım desteklenir Ayni isimde iki tane kalıtımla gelmiş üye varsa, istenilene :: operatörü ile erişilebilir class Thread {... } class Drawing {... } class DrawThread : public Thread, public Drawing { } Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ, Magosa, KKTC 1-27

C++ dilinde NYP desteği... Dinamik bağlama virtual olarak tanımlanan metodlar polimorfik değişkenler aracılığı ile çağrılabilirler ve metodlara dinamik olarak bağlanırlar pure virtual olarak tanımlanmış bir metodun gövdesi yoktur (yani soyuttur) İçinde en a bir tane pure virtual metod olan sınıf, sanal bir sınıftır (abstract class) Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ, Magosa, KKTC 1-28

C++ dilinde NYP desteği... Değerlendirme C++ dilinde bol miktarda erişim kontrolü vardır C++ dilinde çoklu kalıtım vardır C++ dilinde programcı tasarım zamanında hangi metodun dinamik, hangisinin statik olarak bağlanacağını belirtmelidir Statik bağlama daha hızlı! Tercüme (interpretation) ve dinamik bağlamadan dolayı Smalltalk C++ya göre 10 misli kadar daha yavaş Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ, Magosa, KKTC 1-29

Nesne yönelimli yapıların gerçeklenmesi İki önemli konu Örnek değişkenlerinin (instance variables) hafızadaki yapıları Mesajların metodlara dinamik bağlanması Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ, Magosa, KKTC 1-30

Örneklerin veri saklaması Sınıf Örnek Kayıtları (SÖK) (Class Instance Records) nesnenin durumunu saklar Statikdir (derleme zamanında belirlenir) Bir sınıfın babası varsa, çocuğun örnek değişkenleri babanın sınıf örnek kaydına eklenir Mesajların metodlara dinamik bağlanması destekleniyorsa, SÖK içinde sınıfın Sanal Metod Tablosu na (SMT) (Virtual Method Table (VMT)) bir işaretçi olması gerekir Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ, Magosa, KKTC 1-31

Metod çağırmalarının dinamik bağlanması Sanal Metod Tablosu (SMT) (Virtual Method Table): Her sınıf için bir tane olmak üzere, sınıfın örnekleri aracılığı ile çağrılabilen metodların kodlarına işaretçileri barındıran tablo Sadece dinamik olarak bağlanan metodların SMT de girdisi olması gereklidir (statik olarak bağlanan metodların SMT de olmaları gerekmez) Dinamik olarak bağlanan metodlara çağrılar, metodun koduna SÖK içindeki SMT işaretçisi aracılığı ile olur Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ, Magosa, KKTC 1-32

Metod çağırmalarının dinamik bağlanması... Metod çağrıları VMT başlangıcından itibaren göreceli adres olarak temsil edilebilir Baba-çocuk ilişkisi içinde olan iki sınıfa ait olan bir metodun her iki sınıfın SMT si içindeki göreceli adresi ayni olur Çocuk sınıfta yeni olarak tanımlanan metodlar, babanın SMT sinin sonuna eklenir e.f() çağrıldığı zaman olanlar (e nin sınıfı E ise) : e nin SÖK ü içinde E sınıfının SMT sinin adresi bulunur. f() metodunun göreceli adresi 10 ise, f() in kodunun adresi, SMTnin adresi + 10 dur. f() in koduna gidilir (fonksiyon çağırması olarak) Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ, Magosa, KKTC 1-33

Özet NYP de üç önemli kavram var: Soyut Veri Tipleri, kalıtım, dinamik bağlama Ana tasarım problemleri: sadece nesneler mi var? Altsınıflar alttip midirler? Polymorfizm varmıdır? Tekli-Çoklu kalıtım? Dinamik bağlama? Smalltalk saf bir nesne yönelimli dildir C++ dilinde iki farklı tip sistemi mevcuttur (hibrid) NYP gerçeklenmesi için yeni veri yapılarına ihtiyaç vardır (SMT vs.) Tercüme edip geliştiren: Doç. Dr. Zeki Bayram, DAÜ, Magosa, KKTC 1-34