30 Kasım 2011 Çarşamba

Test 2 - Kontrol Soruları - Kimlik, durum ve davranış kavramlarını açıklayınız.

Erklären sie die Begriffe Identität, Zustand und Verhalten.
● Identität: eindeutig, Adresse des Objekts im Speicher, über die Identität ist das
Objekt ansprechbar, Objekte sind “identisch”, wenn Referenzen auf denselben
Speicherplatz verweisen, kann durch Zustandsänderung nicht verloren gehen
● Zustand: definiert durch Objektvariablen, Objekte sind “gleich” wenn sie
denselben Zustand (+ Verhalten, durch die gemeinsame Klasse gegeben)
haben, Gleichheit kann durch Zustandsänderung (z.B. Variablenwert Änderung)
verloren gehen
● Verhalten: definiert durch Methoden - was wird bei Erhalt einer Nachricht getan.
Objekte haben dasselbe Verhalten, wenn sie bei gleicher Nachricht und im
gleichen Zustand das Gleiche machen

**************************************************

Kimlik, durum ve davranış kavramlarını açıklayınız.
Kimlik: bellekte nesnenin açık adresi, kimliği hakkında
Adresli nesne, nesneleri "aynı" ise aynı referans
Bellek referans durumu değiştirmek gidebilirsiniz kayıp değil
● Durum: nesne değişkenleri tarafından tanımlanan, nesneleri "eşit" Eğer onlar
Aynı durumu (ortak sınıf tarafından verilen + davranış)
statü eşitliği değişebilir (örneğin, değişken değeri değişir)
kaybolmak
davranış: yöntemlerle belirlenmiş - bir mesajın alınması üzerine yapılır.
Nesneler aynı iletiyi ne zaman aynı davranış ve
aynı durumda aynı şeyleri

Test 2 - Kontrol Soruları - Getter ve Setter Metotları ile Veri saklama ilişkisi

Was haben Getter- und Setter-Methoden mit Data Hiding zu tun?
Durch getter / setter kann ich den einfachen zugriff auf daten ermoeglichen, die ich intern womoeglich
ganz anders represaentiere. Beispiel: Bitfield klasse die das feld intern in einem int / long speichert, aber
den zugriff per index ermoeglicht und boolean erwartet / zurueckliefert.
S. 179 steht:
public void setX(double newX) { x = newX; }
public double getX() { return x; }
Es handelt sich um sogenannte Setter- bzw. Getter-Methoden, die nur eine
Objektvariable setzen oder abfragen. Durch solche Methoden bekommt
man Zugriff auf Objektvariablen, obwohl die Variablen selbst als private
deklariert sind. Lehrbücher verwenden diese Beispiele schlicht wegen ihrer
Einfachheit. In der Programmierpraxis sollte man Setter- und Getter-
Methoden vermeiden, so gut es möglich ist, da durch sie die Vorteile des
Data Hiding weitgehend verloren gehen.

************************************

Ne Veri Gizleme ile ilgili alıcı ve ayarlayıcı yöntemleri var mı?
Getter / setter sayesinde ben kolay veri erişimi, ki muhtemelen dahili olabilir
represaentiere oldukça farklı. Örneğin, sınıf bit maskesini alan, uzun / int kaydeder, ancak
beklenen ve dizin mantıksal / döner erişimine izin verir.
P. 179 okur:
public void Setx (çift newX) {x = newX;}
kamu çift GetX () {return x;}
Sözde alıcı ve ayarlayıcı yöntemleri vardır ki sadece bir
Nesne değişken veya set sorgu. Bu tür yöntemlerle alın
, nesne değişkenleri erişmek için de özel olarak değişken kendisi
bildirilmiştir. Ders kitapları nedeniyle, sırf bu örnekleri kullanmak
Sadelik. Programlama uygulamada belirleyici ve alıcı olmalı
Yöntem, çünkü onlar aracılığıyla, mümkün olduğu gibi, yararlarını önlemek için
Veri büyük ölçüde kaybetti gizlenmesi.

Test 2 - Kontrol Soruları - Sınıf nedir? Ne işe yarar?

Was sind und wozu verwendet man Klassen?
● Beschreiben die Struktur (Implementierung) eines Objektes im Detail
● Kann man als Bauplan für die Erzeugung neuer Objekte zur Laufzeit verstehen

**********************************

Sınıf nedir? Ne işe yarar?
ayrıntılı olarak bir nesnenin yapısı (uygulama) açıklar
çalışma zamanında yeni nesneler yaratmak için bir plan olarak görülebilir

Test 2 - Kontrol Soruları - Nesne için Arabirim nedir? Uygulama nedir?

Was versteht man unter einer Schnittstelle eines Objekts, was unter
seiner Implementierung?

● Schnittstelle: wird aus den Methodendeklarationen und deren abstrakter
Beschreibung gebildet; entspricht der Aussenansicht eines Objekts
● Implementierung: legt das in der Schnittstelle unvollständig definierte Verhalten
im Detail fest; entspricht der Innenansicht eines Objekts

***********************************
Arabirim nedir?  Uygulama nedir?
Arabirim: soyut yöntem bildirimleri ve dan
Açıklama bir nesnenin dış karşılık kurdu
Uygulama: tam olarak tanımlanan davranış arayüzü içine ayarlar
bir nesnenin karşılık, ayrıntılı olarak tespit

Test 2 - Kontrol Soruları - Kapsülleme, veri saklama ve veri soyutlama nedir?

Was ist und wozu dient Kapselung, Data Hiding und Datenabstraktion?
Die Eigenschaften eines Objekts, Variablen und Methoden zu einer Einheit
zusammenzuführen nennt man Datenkapselung. Zusammen mit data hiding, dem
Verstecken von Details durch private, spricht man von Datenabstraktion.

**********************************************
Kapsülleme, veri saklama ve veri soyutlama nedir?
Tek bir birim nesne, değişken ve yöntemleri özellikleri
birlikte kapsülleme denir. Birlikte veri gizleme ile,
Özel ayrıntılarını gizlemek, veri soyutlama denir.

kaynak: Kadir Çamoğlu
Nesneye Yönelik Programlama (NYP), günümüzde en yaygın kullanılan programlama yaklaşımlarından biridir. NYP, programcının çözümü geliştirirken problem ve çözüm kümelerini nesneler ve bu nesneler arasındaki ilişkiler olarak tanımlaması ilkesine dayanır.  Yani gerçek yaşamın belirli bir kesitinin, nesneler ve nesneler arasındaki ilişiler olarak program birimlerine dönüştürülmesidir.

NYP’nin en temel kavramları olan nesne, sınıf, kalıtım, çok biçimlilik, kapsülleme gibi kavramların iyi anlaşılması, NYP’nin iyi anlaşılması için önemlidir. Bu konuda programlama dilleri tarafında neyin ne olduğu çok kesin olarak bellidir. Ancak kavramsal tarafta kaynakların üzerinde uzlaştığı tanım bulmak çok kolay değildir.

Aşağıda en temel NYP kavramlarını ve bu kavramlarla ilgili benim yorumladığım tanımları bulabilirsiniz.

NESNE:
Nesneye yönelik programlama yaklaşımının temelini “nesne” kavramı oluşturmaktadır.  Nesne, kendine has özellikleri olan ve özelliklere bağlı olarak belirli bir durumda bulunarak çeşitli tutumlar sergileyen somut ya da soyut varlıklardır. Bu tanım, “somut” kısmıyla gerçek yaşamdaki nesneler için de geçerlidir. Ancak gerçek yaşamda ”nesne” olarak nitelendirmediğimiz işlem, sipariş, talep gibi kavramlar programlama ortamında nesne olarak tanımlanabilirler. Bu da tanımın “soyut” diye ifade ettiği bölümü oluşturur.
Her nesnenin bir durumu vardır. Durumla ifade edilmek istenen şey, nesnenin özelliklerinin belirli bir andaki değerlerinin tümüdür. Özellikler nesnenin karakteristiğini, kalitesini, vasıflarını belirtir. Örneğin bir masanın metal, ahşap ya da cam oluşu o masanın özelliklerinden biridir ve masayı nitelendirir.  Bir masanın yükseklik, en, boy, biçim, ağırlık, malzeme türü gibi birçok niteliği olabilir.
Tutum, nesnelerin kendilerine gelen mesajlara verdikleri cevaplar ve etkilere gösterdikleri tepkilerden oluşur. Tutum o nesnenin "yapabileceklerinin/davranışlarının” görünür olanlarıdır. Tutumlar programlama dillerinde kendilerini metotlar ve olaylar (events) olarak gösterir.
Kimlik (identity), nesneyi diğer örneklerinden ayıran özelliğidir. Bir nesnenin tüm örnekleri aynı şablondan oluştuklarından aynı özelliklere sahiptirler. Ancak bu özelliklerden bir tanesi, alacağı değerler bakımından örneği diğerlerinden ayırabilir olmalıdır. Böylece o sınıftan oluşturulmuş nesnelerin birbirlerinden ayırıcı birer kimlikleri oluşturulabilir.

SINIF:
Gerçek yaşam perspektifinden bakıldığında sınıf, aynı türden nesnelerin oluşturduğu bir kümedir. Etrafımızda birçok araba görürüz ve bu arabaları “araba” olarak sınıflandırarak konuşur, tanımlarız. Benzer şekilde ev, yol, semt gibi birçok türde nesneyi bir arada temsil ederek nitelendiririz.  Programlama perspektifinden bakıldığındaysa sınıf, bir nesnenin özelliklerini ve davranışlarını tanımlayan şablondur; nesnenin kodlanmış halidir ve geliştirme zamanıyla ilgilidir. Kullanılan programlama diline bağlı olarak farklılık gösterse de, nesnenin durumunu taşıyacak olan özelliklerin neler olacağı, hangi veri tiplerinde oldukları; nesnenin tutumunu belirleyecek olan olayların ve metotların isimleri, alacakları parametreler ve çağırıldıklarında ne yapacakları sınıf içinde kodlanarak tanımlanır.
Gerçek yaşamda her nesne bir sınıfın üyesi olarak karşımıza çıkmaktadır. Programlama açısından bakıldığındaysa nesneler sınıf şablonu kullanarak bellekte yapılandırılırlar. Bu işleme sınıfın ya da nesnenin bir örneğinin türetilmesi adı verilir.

METOT:Bir nesnenin yapabileceklerini, o nesnenin metotları belirler. Dışarıdan erişilebilir bir arayüze sahip olan ve fonksiyon olarak tanımlanan isimlendirilmiş kod blokları, nesnenin metotlarıdır. Metotlar parametreli ya da parametresiz olarak tasarlanabilirler. Parametresiz bir metot, sadece ismi çağırılarak kullanılabiliyorken, parametreli bir metodu çağırmak için, metodun beklediği parametreleri uygun şekilde yollamak gerekir. Bazı metotlar çağırıldıklarında sadece tanımlanmış belirli bir işlevi yerine getirirler. Bazı metotlarsa kendilerini çağıran nesneye geri yönde bir mesaj yollarlar.

MESAJ İLETİMİ:
Bir nesnenin başka bir nesneye bilgi göndermesi, o nesneden bilgi istemesi ya da bir iş yapmasını söylemesi mesaj iletimi olarak nitelendirilmektedir. Bu programlama açısından bir nesnenin diğer metodu çağırmasıdır. Bir nesne diğer bir nesnenin metodunu çağırırken, ona en azından metodun adını mesaj olarak iletir. Eğer çağırılan metot, parametreli bir metotsa, bu sefer mesajı iletecek nesne, mesajı alacak olan nesneye, metodun adıyla birlikte belirlenmiş veri tiplerinde parametre değerlerini de içeren daha kapsamlı bir mesaj yollar. Eğer metot geri dönüşlü bir metotsa, bu sefer çağırılan nesne, çağıran nesneye bir mesaj yollayacaktır. Mesaj iletimi, nesneler arasındaki iletişim şeklidir.

KALITIM:
Kalıtım en basit tanımıyla, bir sınıfın belirli özellik ve tutumlarını bir üst sınıftan alarak, kendisi için farklı olan özellik ve tutumları ayrıca uyguluyor olmasıdır. Bu tanımdaki bir üst sınıf ilişkisi, genel sınıflandırma mantığı içinde bir hiyerarşiyi ifade eder. Bunu bir örnekle anlatacak olursak, bir kedi, üst sınıf olarak “kedigiller”e aittir. Bunun da üzerinde etoburlara, memelilere, omurgalılara ve en üstte hayvanlar sınıfına dahildir. Kedi, en üstteki “hayvan” sınıfından başlayarak her bir alt sınıfta bir takım özellikleri özelleşerek, en sonunda kendi sınıfına ait özelliklere sahip olur.
Programlama açısından kalıtım, sınıfın özelliklerinin üst sınıflara ait genel olanları yeniden kodlamaya gerek duymaksızın, üst sınıflardan devralması anlamına gelmektedir. Böylece genel özellikler ve tutumlar üst sınıflardan (parent) gelirken, yazılımcı sadece sınıfa ait olan durum ve tutumları programlar. Bu durumda belirli durum ve tutumları miras alınan sınıfa ebeveyn (parent) ya da süper (super) sınıf denir. Üst sınıfın bir alt sınıfı yani mirasçısı olarak tanımlanan yeni sınıfa da alt sınıf (subclass) adı verilir.
Örneğin Kaynak adında bir sınıfı ele alalım. Bu sınıfın amacı bir kütüphanedeki öğelerin tümünü temsil etsin. Kütüphanedeki her bir öğe için, onun yerini ve kategorisini belirleyen bir kodu olacaktır. Bu durumda “Kod” özelliği Kaynak nesnesinin kimlik özelliği olarak karşımıza çıkar. Ayrıca bu kaynağın kütüphanedeki yerini belirleyen bir “Yer” özelliği de olabilir. Sonuçta elimizde kod ve yer özelliği olan bir sınıf bulunmaktadır. Şimdi kütüphanedeki kitaplar için kaynak sınıfından türetilmiş bir “Kitap” sınıfı oluşturulduğunu düşünün. Bu Kitap sınıfının doğal olarak ebeveyninden miras aldığı bir Yer ve Kod özelliği olacaktır.  Buna ek olarak belki de kitap türündeki kaynaklar için yazar, yayınevi, sayfa sayısı, basım sayısı vb. gibi bilgiler tutmak istenebilir. İşte bu durumda bu yeni özellikler, yeni sınıfa ait, özelleştirilmiş üyelerdir.
Java ve C# gibi bazı programlama dilleri tek bir sınıftan miras almayı desteklerken C++ birden fazla sınıftan miras almayı destekler.

SOYUTLAMA:
Nesnenin uygulama için gerekli olan özelliklerinin kodlanarak, diğer özelliklerinin kodlanmaması uygulamaya dahil edilmemesi anlamına gelir. Örneğin bir otopark yazılımda aracın plaka bilgisi, giriş/çıkış saatleri önemlidir. Eğer marka/modele göre ücretlendirme yapmıyorsanız, bu bilgilerin sınıfa/nesneye dahil edilmesine gerek yoktur. Ayrıca aracın şase numarası, motor hacmi, motor numarası gibi büyüklükler de soyutlamanın dışında bırakılmalıdır.

ÇOK BİÇİMLİLİK:Çok biçimlilik, nesnelerin kendi türlerinin dışında farklı türler olarak da temsil edilmelerini sağlar. Ancak bu alt-sınıf/üst-sınıf ilişkisiyle sınırlıdır. Yani belirli bir üst sınıftan türetilmiş olan bir sınıf, her ne kadar kendi özel tutum ve durumlarına sahip olsa da,  üst sınıfından bir nesneymiş gibi de davranabilirler.
Bir önceki başlıkta anlatılan kitap ve kaynak sınfları üzerinden devam edecek olursak, bir kitap nesnesi aynı zamanda bir kaynak nesnesi olarak da kullanılabilir. Bunu sağlayan, kitap sınıfının kaynak sınıfının bir alt sınıfı olmasıdır. Böylece kitap sınıfı hem kitap hem de kaynak sınıfı olarak ifade edilebildiğinden çok biçimlilik göstermiş olur.

KAPSÜLLEME:
Bilgi saklama ya da koruma olarak da bilinen kapsülleme, nesnenin yaptığı işler ve durumuyla ilgili bilgilerin ve işlevsel karmaşıklığının gizlenmesi anlamına gelir. Tanımından da anlaşılacağı üzere iki temel amacı vardır: bilgi saklama ve karmaşıklığı gizleme.
Kapsülleme sadece bilginin yani nesnenin özelliklerinin değerlerinin saklanması değil, aynı zamanda hangi metotlarının erişilebilir olup olmayacağının da belirlenebilmesi anlamına gelmektedir.
Kapsüllemenin sonucu olarak, her sınıf için dışarıya açılacak metotlarının bir şekilde bildirilmesi gerekir. Sınıfın arabirimi (interface) olarak tanımlanabilecek olan bu tanımlamayla, diğer nesnelerin bu nesne üzerinden hangi metotlara ulaşabileceği tanımlanmış olur. Birçok programlama dilinde, arabirimlerin hangi seviyelerden (sadece o sınıfın dahil olduğu proje, ya da herkes tarafından gibi) erişilebilir olduğu belirlenebilmektedir.

Test 2 - Kontrol Soruları - Yerel değişkenler ile Nesne değişkenleri arasındaki farklar?

Wodurch unterscheiden sich Objektvariablen von lokalen Variablen?
● Lokale Variablen existieren nur solange bis aus der aufgerufenen Prozedur (in
der sie definiert werden) zurückgekehrt wird
● Objektvariablen dienen der Ablage von Daten eines Objekts und sind überall im
Programm gültig, wo es eine Referenz auf das Objekt gibt

*************************************

Yerel değişkenler ile Nesne değişkenleri arasındaki farklar?
Yerel değişkenler (de denilen işlem kadar sadece mevcut
onlar geri tanımlandıkları) 'dir
Nesne değişkenleri bir nesnenin veri depolamak için kullanılan ve her yerde olan olan
Program, her yerde nesnesine bir başvuru var
  
kaynak: 
Yerel değişkenler (local variables)
Yerel değişkenler bir metodun ya da bir blokun iç değişkenleridir. Her metot, sınıf içinde bir bloktur. Ayrıca { } parantezleri içinde yazılı olan deyimler sınıf içinde bir blok oluşturur. Örneğin, döngüler, yönlendirmeler blok örnekleridir. Metodun yerel değişkenleri için şu kurallar geçerlidir.
  • Metot çağrıldığında bellekte kendilerine birer yer açılır (allocated on method entry)
  • Metodun işi bitince, yerel değişkenler de bellekten silinir (de-allocated on method exit)
  • Metodun her çağrılışında, her yerel değişkene yeniden yer açılır (initialized every time)
  • Yerel değişkenlere yalnızca ait oldukları metot erişebilir (only accessible in their methods)

Test 2 - Kontrol Soruları - Dönem çarpanlara ayırma ne anlama geliyor?

Was bedeutet der Begriff Faktorisierung? Wann ist eine Faktorisierung gut, wann
nicht?
Faktorisierung bedeutet die Aufteilung großer Programme in kleine Einheiten ,
in welchen zusammengehörige Eigenschaften und Aspekte des Programms
zusammengefasst sind. Wenn mehrere Stellen in einem Programm die gleichen
Befehle ausführen, sollen diese Stellen durch Aufrufe einer Methode ersetzt werden, die
diese Befehle ausführen.
Gute Faktorisierung zeichnet sich aus, wenn man eine Änderung all dieser Stellen
durch eine einzige Änderung der Methode bewirkt.
Hat ein Programm Eigenschaften und Aspekte, die nichts miteinander zu tun haben,
so müssen diese klar voneinander getrennt werden. Eine Änderung soll unabhängig
voneinander vorgenommen werden. In diesem Fall ist eine Faktorisierung keine gute
Idee.
Die Entscheidung ob eine Faktorisierung durchgeführt werden soll, oder nicht, ist dabei
oft sehr schwierig. An dieser Stelle nur zwei Stichworte: Klassenzusammenhalt und
Objektkoppelung (Siehe Seite. 222)

***************************************************

Dönem çarpanlara ayırma ne anlama geliyor? Çarpanlara ayırma ne zaman iyi ve ne zaman kötüdür?
Ayrıştırma, küçük birimler halinde büyük programları bölünmesi anlamına gelir
Programın ilgili özellikleri ve yönleri olduğu
özetlenmiştir. Bir programda aynı birden çok yeriniz varsa
Çalıştırmak için Komutlar, bu noktaları bir yöntem çağrı değiştirilir
Bu komutları.
İyi çarpanlara karakterize, tüm bu yerlerde bir değişiklik
yöntem tek bir değişiklik nedeniyle.
Eğer bir program özellikleri ve birbirleriyle ilgisi olmayan yönleri,
Bu açıkça ayrılmalıdır. Bir değişiklik bağımsız olmalıdır
birbirinin yapılacaktır. Bu durumda, bir çarpanlara iyi değil
Fikir.
Bir çarpanlara ayırma değil, yapılan ya da edip bir karardır
genellikle çok zor. Bu noktada, sadece iki anahtar kelimeler: sınıf bütünlüğü ve
Nesne bağlantı (sayfasına bakınız. 222)

Test 2 - Kontrol Soruları - Artan yazılım geliştirme ne demektir?

Was versteht man unter inkrementeller Softwareentwicklung?
Die schrittweise Erstellung eines Programms. Anfangs wird nur ein kleiner Teil der
Aufgaben gelöst. Schritt für Schritt werden Teile hinzugefügt und Erfahrungen aus den
vorherigen Schritten fließen in die Entwicklung mit ein.

**********************************************
Artan yazılım geliştirme ne demektir?
Bir programın kademeli yaratılması. Küçük bir parçası Başlangıçta, sadece
Görevler çözüldü. Adım adım, parça ve deneyimleri ekleyin
Önceki adımlar kalkınma sürecine dahil.


soru hakkında kaynak..
“Yazılım Geliştirme Süreci” Nedir?
Bilinenin ve sıklıkla uygulananın aksine yazılım geliştirme hadi “yeni bir proje açalım, bir form çekelim” şeklinde yapılmaz. İlk olarak yazılımdan ne beklendiğinin belirlenmesi gerekir. Yani çözümün tanımlanmasıyla başlanır yazılım projelerine. Ardından çözümün geliştirilmesi adımı gelir. Son olarak da çözüm müşteriye kurulur ve bakım/destek süreci başlar.
Tek Kişilik Yazılım Evi’nde her şey çok basittir. Yazılım geliştirme süreci de basitçe tanımlanmıştır.
1. Tanımla ve planla
2. Çözümü geliştir
3. Yazılımı kur ve destekle

Birinci Aşama: Tanımlama/Planlama
Ortada bir müşteri varsa yazılım projesinden bahsedilir. Bir müşteri varsa, mutlaka bir beklenti de vardır!
Müşterinin ne istediğini öğrenip, ayırdığı bütçeyle belirlediği zaman dâhilinde gerçekte nelere ulaşabileceğinin belirlendiği aşamadır bu aşama. Yazılımın “ne yapacağı”, bu aşamanın yazılım geliştirme sürecindeki payıdır. Bu aşamanın birde her bir yazılım geliştirme sürecinin bir proje oluşu nedeniyle planlama, bütçeleme, ekip oluşturma vb. yönü de olacaktır.

İkinci Aşama: Geliştirme
“Ne istendiği” tam olarak anlaşıldıktan sonra, sıra bunu yapmaya gelir. Öncelikle istenenin hangi teknolojileri, programlama dillerini, veri tabanı altyapısını kullanarak, nasıl sağlanacağı belirlenir. Çözümün tasarımı adımı olarak bilinen bu adımdan sonra ancak kodlamaya başlanır. Kodlama sırasında ve sonrasında da yapılanın isteneni karşılayıp karşılamadığı sürekli test edilir.

Üçüncü Aşama: Bakım/Destek
Yazılımlar canlı varlıklardır. Yazılımların yaşam döngüsü iki temel süreçten oluşur. Geliştirilme ve bakım.
Müşterinin istekleri ve kaynaklar çerçevesinde geliştirilen yazılım, müşteri yerine yüklendikten ve kullanıcılara eğitimleri verildikten sonra gerçek anlamda yaşamaya başlamıştır. Bu noktadan itibaren kullanıcı ihtiyaçlarının farklılaşması, işin yapılış biçiminin değişmesi, donanım yükseltmesi, yeni teknolojilerin gelişmesi gibi birçok farklı nedenden dolayı yazılımlarda değişiklik yapılması gerekecektir. İşte bu süreç bakım sürecidir.

Yazılım Geliştirme Sürecinde En Önemli Adım Nedir?
Profesyonel olarak bir yazılım evinde çalışıyor veya tek başınıza proje geliştiriyor olabilirsiniz. Belki de ikinci iş olarak birileri için yazılım geliştiriyorsunuzdur. Belki bir öğrencisiniz ve ödeviniz bir yazılım projesi. Belki de hobi olarak kendinize bir yazılım üretiyorsunuz. Sebep ya da şekil ne olursa olsun, yazılım geliştirme sürecinin en önemli adımı “ne yapılacağının” doğru belirlenmesi ve doğru planlanmasıdır.
Ne yapılacağını doğru anlamadıysanız, ne kadar kaliteli bir tasarım çıkartıp, ne kadar doğru bir şekilde kodlarsanız kodlayın sonuç hatalı olacaktır. Tabii ki sonrasında yapacağınız şeyi nasıl yapacağınızı (tasarım) doğru belirlemeniz ve bunu doğru kodlamanız (geliştirme) önem kazanacaktır. Ama neticede ne kadar iyi bir uygulama geliştirmiş olursanız olun, müşterinin beklentisini yerine getiremeyen bir uygulama, başarısız bir uygulama olacaktır. 

Test 2 - Kontrol Soruları - büyük programların geliştirilmesinde ne gibi sorunlar var olur?

Mit welchen Problemen muss man bei der Entwicklung großer Programme
rechnen?
● Sie beruhen auf einer Vielzahl an einzelnen Algorithmen (welche jeweils kleine
Teilaufgaben lösen), die auf komplexe Weise miteinander verbunden sind damit
daraus ein in sich konsistentes, ganzes Programm entsteht
● Aufgrund der großen Komplexität ist es in der Regel nicht möglich, ein
großes Programm in einem einzigen Schritt aus vielen einzelnen Teilen
zusammenzusetzen
● Langlebige Software muss über einen langen Zeitraum gewartet werden
(aufwendig, kostenintensiv)
1
● Die Struktur eines Programmes ist ein entscheidendes Qualitätsmerkmal
(Einfachheit, Verständlichkeit, Wartbarkeit)

******************************************************
büyük programların geliştirilmesinde ne gibi sorunlar var olur?
Onlar (farklı algoritmalar çeşitli dayalı her küçük olan
Böylece birbirleriyle karmaşık şekillerde bağlı) alt görevleri çözün
kendi kendine tutarlı, tüm program oluşturulur ve
büyük karmaşıklığı nedeniyle, genellikle mümkün olmayan bir
birçok bireysel parçaların tek bir adımda büyük program
birleştirmek
Uzun ömürlü yazılımı uzun süre muhafaza edilmelidir
(Tüketen pahalı)
Bir programın yapısı çok önemli bir kalite kriteridir
(Basitlik, okunabilirlik, idame)

Test 2 - Kontrol Soruları - Nesne yönelimli Program türleri uygun olarak neyi en iyi programlarlar?

Für welche Arten von Programmen eignet sich die objektorientierte
Programmierung gut?

Große Programme mit einem langen Softwarelebenszyklus
Umfangreiche Programme, die leicht zu erweitern sein sollen.


************************************************

Nesne yönelimli Program türleri uygun olarak neyi en iyi programlarlar?
- Uzun yaşam döngüsü yazılım geniş programlar 

- Genişletmek için kolay olmalıdır kapsamlı programlar.





Test 2 - Kontrol Soruları - Nesne (Object) Nedir?

Was ist ein Objekt? 
Ein Objekt ist eine Instanz einer Klasse. Sein Zustand wird durch seine Variablen
definiert, sein Verhalten durch die Methoden. Seine Identität ist eindeutig.

*******************************************

Bir nesne nedir?
Bir nesne bir sınıfın örneğidir. Onun durumu değişken ile karakterizedir
yöntemlerle onun davranış tanımlar. Onun kimliği açıktır.

örnek: 
Sınıf (Class) Nedir? Nesne (Object) Nedir?

Sınıf ve nesne kavramı bir benzetme ile açıklanırsa: Sabun fabrikasında yeni bir sabun tasarımı üzerinde çalıştığımızı hayal edelim; ortaya yeni bir kalıp çıkarttık... Artık son aşama olan üretime geçmek istiyoruz. Bu kalıp içerisinde sabun nesnelerinin hangi boyutlarda, hangi renkte olacağı, nasıl kokacağı vs. gibi bilgilerin hepsi bizim tarafımızdan belirlenmiş durumda olacaktır. Üretim aşamasına geçildiğinde hep aynı sabun kalıbını kullanılarak yeni sabun nesneleri üretmemiz mümkün olacaktır. Buradaki önemli nokta, sabun kalıbı tasarımı birkez yapılmış olmasıdır; ancak, bu kalıp ile N tane sabun nesnesi üretilebilmektedir. Buradan yola çıkılarak sabun kalıbını sınıfa, sabunlarsa nesnelere benzetilebilir

Test 2 - Kontrol Soruları - Prosedurel ve Nesne yönelimli programlama

Wodurch unterscheidet sich der objektorientierte vom prozeduralen
Programmierstil?
Bei der prozeduralen Programmierung werden Programme durch kleinere Teilprobleme
(=Prozeduren) aufgebaut. Diese Art der Programmierung ist besonders gut geeignet,
um kleine Programme zu schreiben, die einzelne Algorithmen implementieren.
In der objektorientierten Programmierung hingegen wird ein Programm in mehrere
abstrakte Maschinen (welche von außen als Objekte betrachtet werden) unterteilt,
welche miteinander arbeiten, ohne dass eine Maschine Details der anderen kennt.
Der größte Unterschied jener Stile ist demnach, dass bei der objektorientierten
Programmierung die zentrale Kontrolle aufgegeben wird, während wir uns bei der
prozeduralen Programmierung die Kontrolle über alle Details des gesamten Ablaufs
verschaffen.

******************************************

ilk olarak keşfedilen programlama tekniğidir. bu teknikte kod satırları yukarıdan aşağıya belirli bir sıra ile ilerler. kodun temel yapı taşı metodlardır. metodlar yapılacak olan işin diğer işlere olan bağlılığının minimum şekilde oluşturulması üzerine kuruludurlar. günümüz nesne yönelimli programlama tekniği sayesinde gün geçtikçe daha az kullanılmaktadır.

bu programlama metodunun hala yoğun bir şekilde kullanıldığı yerlerden biri de uzay sektörüdür.

Test 2 - Kontrol Soruları ve Cevapları * TÜRKÇE

Test 2 - Kontrol Soruları ve Cevapları aynı başlıktaki konudaki soru sırasına göre türkçeleştirilmiştir. Devrik cümleler çeviri sırasında oluşmuş olabilir. Burdaki amaç soruları hem Türkçe bir kez daha tekrar etmek hemde soru ve cevaplarla ilgili Türkçe kaynak sağlamaktır.

**************************************************

Nesneye yönelik usul ne unterscheidetsichStil Programlama?Prosedürel programlama programlarında daha küçük alt sorunlar(= Prosedürler) kuruldu. Programlama Bu tür özellikle uygundurbireysel algoritmalar uygulamak küçük programlar yazmak için.Nesne tabanlı programlama ise, çeşitli bir programbölünmüş Soyut makinalar (bu nesneleri olarak dışarıdan görülmesi)bir makine olmadan birlikte bu işin diğer ayrıntıları bilir.Büyük fark stilleri o nesne yönelimli olmasıdırDe ederken merkezi kontrol programlama, terk edilmiş birsürecin tüm ayrıntılarını prosedürel programlama kontrol. Vermek


Bir nesne nedir?Bir nesne bir sınıfın örneğidir. Onun durumu değişken ile karakterizediryöntemlerle onun davranış tanımlar. Onun kimliği açıktır.


Program türleri nelerdir, nesne tabanlı programlama iyidir?Uzun yaşam döngüsü yazılım geniş programlarGenişletmek için kolay olmalıdır kapsamlı programlar.

Ne sorunlar, büyük programların geliştirilmesinde hesaplamak gerekiyor?● Onlar (farklı algoritmalar çeşitli dayalı her küçük olanBöylece birbirleriyle karmaşık şekillerde bağlı) alt görevleri çözünkendi kendine tutarlı, tüm program oluşturulur ve● büyük karmaşıklığı nedeniyle, genellikle mümkün olmayan birbirçok bireysel parçaların tek bir adımda büyük programbirleştirmek● Uzun ömürlü yazılımı uzun süre muhafaza edilmelidir(Tüketen pahalı)1Bir programın ● yapısı çok önemli bir kalite kriteridir(Basitlik, okunabilirlik, idame)


Artan yazılım geliştirme ne demektir?Bir programın kademeli yaratılması. Küçük bir parçası Başlangıçta, sadeceGörevler çözüldü. Adım adım, parça ve deneyimleri ekleyinÖnceki adımlar kalkınma sürecine dahil.


Dönem çarpanlara ayırma ne anlama geliyor? Bir çarpanlara zaman iyi olduğundadeğil?Ayrıştırma, küçük birimler halinde büyük programları bölünmesi anlamına gelirProgramın ilgili özellikleri ve yönleri olduğuözetlenmiştir. Bir programda aynı birden çok yeriniz varsaÇalıştırmak için Komutlar, bu noktaları bir yöntem çağrı değiştirilirBu komutları.İyi çarpanlara karakterize, tüm bu yerlerde bir değişiklikyöntem tek bir değişiklik nedeniyle.Eğer bir program özellikleri ve birbirleriyle ilgisi olmayan yönleri,Bu açıkça ayrılmalıdır. Bir değişiklik bağımsız olmalıdırbirbirinin yapılacaktır. Bu durumda, bir çarpanlara iyi değilFikir.Bir çarpanlara ayırma değil, yapılan ya da edip bir karardırgenellikle çok zor. Bu noktada, sadece iki anahtar kelimeler: sınıf bütünlüğü veNesne bağlantı (sayfasına bakınız. 222)


Değişkenlere yerel değişkenler farklı nesne nedir?● Yerel değişkenler (de denilen işlem kadar sadece mevcutonlar geri tanımlandıkları) 'dir● Nesne değişkenleri bir nesnenin veri depolamak için kullanılan ve her yerde olan olanProgram, her yerde nesnesine bir başvuru var


Nedir ve kapsülleme, veri saklama ve veri soyutlama nedir?Tek bir birim nesne, değişken ve yöntemleri özellikleribirlikte kapsülleme denir. Birlikte veri gizleme ile,Özel ayrıntılarını gizlemek, veri soyutlama denir.


Ne bir mesaj olduğunu ve neden gönderme sözHaberler ve sadece yöntemlerini çağırarak?● onun yöntemlerden birini (gerçekleştirmek için nesne üzerinde arama hangiYöntem hangi gerçek parametreler göre)Biz birbirinden büyük ölçüde bağımsız olduğu açıktır yapmak için ●2Nesneler birbirleri ile iletişim kurmak için yapmanız gereken3● Bu mesaj ilk etapta biter sanmıyorum bu çünküiyi tanımlanmış bir algoritma belli bir kısmının çalışacaktır, ama vardırne sadece bir fikir yöntemi neden olur.● Çok biçimlilik ise ("çeşitlilik") nesnenin türüne bağlı olarak, birbaşka bir yöntemi çalıştırılır - Bu karar ne değilArayanlar.


Ne altında, bir nesnenin bir arabirim ne demektiruygulanması?● Arabirim: yöntemi beyanda ve soyutAçıklama bir nesnenin dış karşılık kurdu● Uygulama: tam olarak tanımlanan davranış arayüzü içine ayarlarayrıntılı olarak belirlenmiş, bir nesnenin iç görünüm karşılık


Ne ile ve hangi sınıflar vardır?● ayrıntılı olarak bir nesnenin yapısı (uygulama) açıklayın● çalışma zamanında yeni nesneler yaratmak için bir plan olarak görülebilir


Nasıl Java görünürlüğünü etkileyebilir?● düzenleyicileri kullanma● Görüş Paketi (standart), içinde (koruma, kamu, özel görünürOlan kalıtsal sınıfları + Sınıfı)


Nerede en görünür nesne değişkenleri nelerdir?● Sadece yere değişkenler erişilebilir olması gerekirolabilir


Ne Veri Gizleme ile ilgili alıcı ve ayarlayıcı yöntemleri var mı?Getter / setter sayesinde ben kolay veri erişimi, ki muhtemelen dahili olabilirrepresaentiere oldukça farklı. Örneğin, sınıf bit maskesini iç alan, uzun / int kaydeder, ancakbeklenen ve dizin mantıksal / döner erişimine izin verir.P. 179 okur:public void Setx (çift newX) {x = newX;}kamu çift GetX () {return x;}Sözde alıcı ve ayarlayıcı yöntemleri vardır ki sadece birNesne değişken veya set sorgu. Bu tür yöntemlerle alın, nesne değişkenleri erişmek için de özel olarak değişken kendisibildirilmiştir. Ders kitapları nedeniyle, sırf bu örnekleri kullanmakSadelik. Programlama uygulamada belirleyici ve alıcı olmalıYöntem, çünkü onlar aracılığıyla, mümkün olduğu gibi, yararlarını önlemek içinVeri büyük ölçüde kaybetti gizlenmesi.


Kimlik, durum ve davranış kavramlarını açıklar.● Kimlik: bellekte nesnenin açık adresi, kimliği hakkında4Adresli nesne, nesneleri "aynı" ise aynı referansBellek referans durumu değiştirmek gidebilirsiniz kayıp değil5● Durum: nesne değişkenleri tarafından tanımlanan, nesneleri "eşit" Eğer onlarAynı durumu (ortak sınıf tarafından verilen + davranış)statü eşitliği değişebilir (örneğin, değişken değeri değişir)kaybolmak● davranış: yöntemlerle belirlenmiş - bir mesajın alınması üzerine yapılır.Nesneler aynı iletiyi ne zaman aynı davranış veaynı durumda aynı şeyleri


Kimlik veya eşitlik Java nesneleri karşılaştırmak nasıl?● Kimlik: == (! Veya = eşitsizlik için)● eşitlik. Eşittir (kendileri için kendi sınıfları tanımlar)


Ne bir yapıcı olduğunu ve nasıl tanımlıyor?● Bir nesnenin ilk devlet (başlatma hazırlamak için kullanılırDeğişkenler)Bu normal olarak ● yapım yöntemleri, ancak: adı yok, sınıf karşılıkSonuç tipi


Eğer sözde değişken ve bu ifadeler ne kullanabilirimBu form (...)?● "Bu", şu anda olduğu nesneye bir referanstır● Bu (...): aynı sınıftan başka bir yapıcısı çağrı


Nasıl statik yöntemleri ve sınıf değişkenleri kullanabilir?● Kelimeler: "statik" statik yöntem / sınıf değişkenleri gösterir● Yöntem: ileti sınıfı gönderilir, (öyle değil nesne gönderilmezBir sınıf örneğine statik yöntem çağrısı ile oluşturulanolabilir)● değişkenleri de kendisi burada kullanılması gerekir sınıfına hiçbir örnek aitdeğişkenlere erişmek için vardır.


Ne sınıf değişkenleri ve sabitleri farklı kılan nedir?● anahtar kelime "statik" hatta "son" sabitleri var● Her zaman aynı değeri sabitler, sınıf değişkenleri değiştirilebilir varolacak● Sabit adı genellikle BÜYÜK HARFLERLE yazılmış"Kamu" sağduyu ● tanımı


Arabirimler nelerdir?● karmaşık bir arayüz yapıları anlatınız● Bir nesne tabanlı program parçaları, bir arasında net bir ayrım yapın


Ne demektir zaman bir arabirim uygulanması birikonuşuyor?Uygulama sınıfında yöntemlerden ● Özel formülasyonu ileArabiriminde tanımlanan tüm yöntemleri üzerine yaz.



Biz polimorfizmi söz ne zaman? Rolü nedirNesne tabanlı programlama Polimorfizmi?Bir nesne birden çok türde olabileceğini ● mülkiyet● Mevkii: programlama çabası (nokta örneğin ve disk olabilir azaltırhesaplama nesneleri farklı bir yöntem ile yapılmalıdır)ve bakım azalır. - Veri farklı türleri aynı kullanabilirsinizArayüz işlenecektir. Tüm bunlar, alt polimorfizm gösteriryanı sıra, parametrik ve ad-hoc polymorphism de vardır.● http://de.wikipedia.org/wiki/Polymorphie_ 28Programmierung% 29% bakınızBiz tepki ortasında sayfa 193 bu almış:Polimorfizm bir nesne birden çok türde olabileceği anlamına gelir. Bu ek olarak birHer tür aynı anda eksik ya da kendisi supertype. Arayüzler ücretsiz olduğundantek miras sınırlamalar dışında, çok esnek bir arayüz olanOlası program tasarımı. Böylece, iki farklı koşullar için bir arabirim kullanılırolmak.


Hangi koşullar altında bir tür T bir tip U alt edilir?● T U grafik bir yol (T U supertype olduğu) ise, yaniT ya da bir alt U T elde edilirse;Java U instanceof T ile test edilebilir● Her tür üst ve alt kendinizi aynı türüdür


Neden dinamik bağlama gerekiyor?Yürütülecek yöntem çalışma zamanında belirlenir durumunda. (BuYöntem daha sonra) polimorfik olabilir


Ne ölçüde dinamik bağlama birden fazla şubesi ile ilişkilidir?Dinamik bağlama birden yürütülmesine dallanma biraz nedeniylestatik bağlayıcı daha az verimli.


Neden dinamik bağlama geçmek ifadeleri ile karşılaştırıldığındami tercih ediyorsunuz?Başka şeylerin yanı sıra, dinamik bağlama verimli bir switch ifadesi ile karşılaştırılır.Bu dinamik bağlayıcı bir program olduğu durum vardırdaha az / daha az çabayla kod geliştirmek için kullanılan bir program gibi olabilirbir switch ifadesi. Eklenen bu ayrıca switch ifadesi olanhata eğilimli.Dinamik bağlama daha verimli olduğu için.Arayüzler (arayüzler) kullanılıyorsa, bir keyfi (hattabilinmiyor) bu arabirimi uygulamaya koydu ki, arkasında yatan nesne.Böylece, dinamik bağlayıcı bir döküm var switch ifadeleri, daha esnekuygun türü yapmak ve uygun yöntemi arama ediyorumvar.


Gerçek için uzmanlaşma ve analojiler amacı nedirDünya?Gerçek dünya ve tasarım uzmanlık A konsantre odaklanırken, genellikle nispeten olabilirkolaylıkla izlenebiliyor en başından beri bir açı diğer her şeyi genişlemesineolarak gerçekten gereklidir.Uzmanlık ve gerçek dünya mukayeseler bize yardımcı araçlardırtanımak için iyi bir program için grafik bir tip uygun nasıl.


Ersetzbarkeitsprinzip ne yapar?A tipi U sonra yazın T tam alt edilecektir tip U tüm nesnelerikullanılmış, hangi tip T nesneleridir beklenebilir.


Miras ne demektir?Başka bir sınıf türetmek, bu nedenle satın alma da dahil olmak üzere yapı,Değişkenler ve yöntemleri. Her sınıf için (Java) yalnızca sınıf A mirasNot: Bu, ancak, arayüzleri herhangi bir sayıda uygulanmaktadır.


Kavramları temel sınıf, türetilmiş sınıf, alt sınıf ve açıklayınızÜst sınıf.● Taban sınıf == Üst Sınıfı: Sınıf türetilmiştir● türetilmiş sınıf == Sınıfı: yöntemleri Ober-/Basisklasse miras


Bir geçersiz yöntemi nedir?Kalıtsal bir yöntem türetilmiş sınıf / alt sınıfta geçersiz kılınırYani içerik yeni kodu ile değiştirilecektir. (Aynı imza, polimorfikYöntem) wikipedia bakın


Neden genel olarak korunmayan değişkenleri mi?Ilan "korumalı" gibi değişkenler türetilmiş sınıfları görülebilir. DoğrudanÜst sınıf değişkenleri erişim ama kötü bir programlama stili dar olduğunu.


Olarak türetilmiş sınıfları nesneleri başlatmak için?● İlk olarak, her zaman üst sınıf bir kurucu denir● süper (...) kullanarak yapıcı ve geçen değişkenler belirleyebilirsinizolacak● lt Script: "yeni bir nesne oluşturmak her zaman bir ilkSınıf yapıcısı, alt sınıfının yapıcı yürütülür.Süper (...) kullanarak biz üst sınıf bir yapıcı ve belirleyebilirsiniz8Değişkenler geçirebilirsiniz. "


Ne bu komut kullanılabilir nerede süper (...) vemi?Sınıf içinde yapıcı ● kesin özellikleri


Bir yöntem çağrısı bir değişken erişim farklıdırdinamik bağlama ile ilgili?Değişkenler erişim dinamik fakat bağlayıcı statik değilse(27.10.11 s.15 gelen P. 208 bildiriler ya da saydam)


Ne için amaç bir değiştirici ile soyut sınıflar ve yöntemler olabilirve son verilmiştir?● soyut sınıflar: bu sınıfın hiçbir örneği oluşturulur olabilir,● soyut yöntemler: hayata olmamalıdır, türetilmiş sınıflar(benzer arayüzler) uygulanmalıdır● Son sınıflar bu sınıftan başka sınıfların elde edebilirsinizolacak● taranan makinesi: yöntemi herhangi bir türetilmiş sınıf sınıf geçersiz olabilirolacak


Nasıl bir program içerisinde arayüzü yapı ilave edebilirsiniz? Getirmek● bir arabirim sınıfı, örneğin devralacak bir rol temsilKendilerini çizebilirsiniz sınıflar için sökülebilen arayüzü. (Dikdörtgen, resim,vb)● Arabirimler daha dersleri almaya ve uygulamaya olabilirBütün bu sınıfların ortak supertype dolayısıyla rolü.


Nesne var ve ne amaçla hangi yöntemlersahip oldukları?-) Dize toString: dönüştürmek dize-) Boole eşittir (Object) eşitlik kontrol edilir-) Orta hashCode () aynı nesneleri -> aynı hash değeri-) Sınıf getClass () nesne sınıfı (= dinamik tip)-) Object clone () nesnesinin bir kopyasını oluşturur- Yayınlanmadan önce) Void) (sonuçlandırmak Temizleme bellek-) Bekle, haber, eşzamanlı programlama notifyAll(31/10/11 s.1 itibaren Slayt)


Nasıl zamanında dinamik yazabilirsiniz, bu nedenle sınıfBir nesnenin (üç olasılık) tespit?Ilk Sınıf getClass () nesne sınıfı döndürür, yukarıya bakınIkinci Belirli bir sınıf adını instanceof operatörü (Object) konumundadırthis.getClass () ile aynı == o.getClass () güvenli ve 2 eğer yanlış sağlarNesneler farklıdır. (Bildiriler S 215 ilk paragrafa bakın)Üçüncü Yayınları sınıf de kaydetti (muhtemelen) üçüncü seçeneği vardırsadece alt türleri üzerine izin verilir.4 object.class, klasse.class geçerli sınıf döndürür

Bu tür temel tip referans türleri farklı atmalarını nedir?Neden bunu önlemek gerekir?Gibi atan türleri değişime karşı başvuru türleri, üzerinde atmalarınıBir ifade (sadece geçici olarak) ilan yazın. Tam olarak neden yayınları olanmümkünse başvuru türleri hata çok yatkındır ve kaçınılmalıdır.


Nasıl sözde değişkenleri Bu ve süper yapmakbirbirinden?, bu sınıf, süper üst anlamına gelir. faydalı ise örneğinbiz kodu yeniden için geçersiz işleve erişmek istiyoruz.(Sınıfı, işlevi yalnızca üst sınıf genişletir)


Neden nesne karşılaştırmaları için hashCode değil mi?hashCode sayıların aynı sırada aynı nesneler için her zaman, amaConverse, iki nesne eşit olabilir, doğru olmamasına rağmen hashCodeeşit sayıda sağlar.

Sınıfları, arabirimleri, yorumlar hangi bilgileriYöntem, yapıcı ve nesne değişkenleri dahil edilecek?Deneyimli bir programcı bir ne değildir açıklayan İyi yorumProgram kodu bir görünüm okumak, ama anlamak için bilmek gerekir.● sınıflar ve arayüzler: türü, amacı hakkında genel bilgi veTür nesne Kaba yapı● Yöntem ve kurucular: Eğer gönderdiğiniz bilgiMesajlar ve oluşturmak gerekli nesneleri● Nesne Değişkenleri: tanımlama amacı olmasa adı ve içeriği ileaçık

Yorum yapabilirsiniz şeklinde güvenceler ne türonlar farklı?● durum● sonşartı● değişmez● Geçmiş Kısıtlar




Ne ölçüde yaş isim ve yorum yapabilirim? Ne yapabilirsinizAncak, do?Program değişiklikleri veya geliştirmeleri kullanabilir ve böylece tarafındanDeğişkenleri değiştirmek, bu nedenle orijinal adı Önemi - o açıksaDe uyumlu olan değişken kullanarak artık uygundur.Yorumlar sadece bir değişken veya eski bir yöntemi kullanabilirsiniz, Aynı zamanda bir değişim gerekli kılan açıklanmaktadır.Yorum adapte veya olmalı bu nedenle bir program değiştirdiğinizdeDeğişkenler ve yöntemleri yeniden adlandırılır.


Nasıl kötü isim ve gereksiz açıklama seçilmiş olabilirProgram kodu çalıştırmak?Bu okuduğunu anlama programının bir parçası ve etkilerProgram bölümünde Güven diğer programcılar tarafından belki, azaltmak içinek önlemlerin inşa edilir (s. 221)

Factorized programlarından iyi ne ayırır?İyi bir yerel çarpanlara program değişiklikleri mümkündür ile: Bu doğru için yeterlibakmanız değiştirmek istediğiniz yeri. Yerel nedeniyle herhangi bir değişiklik yapılmamıştırProgramın geri kalanı ya da ancak çok küçük etkiler.Sınıf uyum ve nesne bağlantı kavramlarını açıklar.


Bu çarpanlara ayırma ile ilgili nedir?● Sınıf uyum: Bir sınıfın ilişki içeriğinin derecesi(Tüm değişkenler ve yöntemleri iyi eşleştirilir Yüksek ve isimleriGörüş ve uygun açıklamalar temsil eder)● nesne bağlantı: birbirinden nesnelerin kalınlığı bağımlılığı (güçlü, eğerBir dışarıdan görünür değişkenleri veya yöntemleri, mesaj çok) GönderÇarpanlara yüksek sınıf uyum ve mümkün olacaksoluk nesne bağlantı


Nasıl nesne sınıfı bütünlüğü ve bağlantı olabilir? TahminKavramsal değişiklik ya da bir parça programı geçmekte edilebilir olarakde bu açıdan değerlendirmek.


Yorum gerekli değişiklikleri tehlikeli, ne zamanne zaman daha zararsız?Değil çünkü yorum arayüzleri değişiklik, tehlikelisadece yöntem değişir, ancak bir ileti görüntüler programındaki tüm yerlerveri arayüzü iletir.Arabirimi aynı kalırsa bir yöntem açıklamaları yapılan değişiklikler, nispeten zararsızdır.Yorum yöntemleri u Arabirimleri uyum olmalıdır - Bir yorum değiştirdiğinizde, daha sonraBu yöntem / arayüz ayarlamak için var!

Davranışı belirtmek için?İsimler ve yorumlar davranışını belirlemek için. Bu uygun sorumludurÖnemli Ersetzbarkeitsprinzips. (Script p.225)


Ne zaman bir supertype bu bir alt tür davranışUyumlu?Eğer beklediğiniz gibi alt tüm nesneleri tüm yöntemleri hareket halindesupertype karşılık gelen yöntemleri beklerdik.


Hangi birbirinden ikame programı parçaları decouples?Bir nesneye bir mesaj gönderir bir program kodu yalnızca bilgi ihtiyaçlarınıBu nesne hakkında biliyorum, ama herhangi bir bilgi alt türleri hakkında gerekliBu nesne. Bununla birlikte, bu kod nesneyi üzerinden mesaj erişebilirsinizFarkında olmadan, alt gönder ve kod hala yürütülür. Bu yüzdenBu kodu ve her alt arasında doğrudan bir bağlantı gerekmezProgram bileşenleri decoupled, bu nedenle var


Hangi türleri daha kararlıdır?Sık kullanılan ve bu nedenle zaten çok iyi olan Sabit, özellikle türleritest edilmektedir. Türleri gibi istikrarlı olarak, tip hiyerarşisinde genellikle daha yüksektirdaha aşağıda.


Nereye kararlı adam özellikle dikkat etmelidir?Idame nesne değişkenlerini ve resmi parametreler ise sabit ile daha iyidirAncak, zaman içinde değişim hangi türleri ve ilan edilir. (Script p.226)


Neden üst sınıfı kadar program kodu, mantıklı değildevralmak istiyor?Bir tür hiyerarşi kurarken, biz çok gibi, bakım gerekirBir üst sınıf devralan yöntemleri. Bunun yerine, bir sağlamalıdırher kullanıcı bir ilan türü, gerçek ihtiyaçları vardırkarşılık gelir. Bir yöntemleri davranışını tamamen konsantre olanYani birine bir alt her yöntemi uygun emin olunSupertype uyumlu davranış yöntemi var. Bu işlemi uygularsanız, sonuçTipi iyi ayırımı sağlamak hiyerarşiler, ve çok yukarıda türleri içindetürü hiyerarşisioldukça kararlı. Başlangıçta bu olduğunu düşünüyor olabilir birsınıflar ve arayüzler gereksiz program kodu daha fazla sayıda yazar.Ancak sonuçta, yazma program kodu bir sürü kaydeder veProgram korumak daha kolaydır.


* * * * * * BÖLÜM 4


Ne algoritmalar ve veri yapıları ile kastedilen nedir ve nasılBu iki kavram ilişki?● algoritma: eylem kural adım sınırlı sayıda çözmek içinSorun● veri yapısı veri birbirlerine göre düzenlenir açıklayan ve nasılbireysel elemanlarına erişilebilir● birbirine çok bağlı; algoritmalar belirli veri yapıları kullanarakönde, bu yüzden onlar olmadan gelişmiş olamaz. Tasarımındaprogramlarının biz gerekli özellikleri temelinde kararVeri yapısı bizim sorunu çözmek için Access işlemlerien çok uyar.



Hangi koşullarda iki algoritma ve veri yapıları aynıdır?Orada değil ne zaman?Aynı fonksiyonel özellikleri sağlarsanız, aynı sonuçları öyle.Olmayan fonksiyonel özellikleri (maliyet, bellek gereksinimleri, verimlilik) olarakOnlar ancak, farklılık göstermektedir.Fen fakültesi mezunu 234 (aşağıda)


Beş farklı veri yapıları listesi.● Dizi● bağlantılı liste● İkili Ağaç● hash tablosu● Yığın● Kırmızı-Siyah Ağacı● Ağaç



Stratejiler nelerdir?Bir strateji altında uzun vadeli bir yaklaşım anlamına gelirtemel sorular. Bu daha çok stratejik hedeflere ulaşılacaktır.Bir sistemin veya algoritmalar ve veri yapıları basitleştirilmesi



Neden bu kadar çok veri yapıları özyinelemeli edilir mi?Karmaşık algoritmalar, programı daha kolay özyinelemeli veri yapıları vardırdaha iyi netlik, için, kompakt, kullanımı kolay, ve daha sonra olabilir teşekkürler. DüzenleÖzyinelemeli yöntemlerden farklı olarak, özyinelemeli veri yapıları pek vardırolmayan özyinelemeli veri yapıları yerini aldı.Özyineli veri yapıları veri keyfi büyük miktarda tarif, ellerindendinamik olarak büyümeye ya da küçültmek ve bu nedenle esnektir.


Ameliyatlar erişim yığınlar, bağlı listeler ve ikili ağaçlar var nelergenellikle?● Yığın: itme, pop● Bağlantılı Listesi: ekleme, kaldırma içerir● İkili ağaç: ekleme, kaldırma içerir


Ne özellikleri bir bağlantılı liste ayırtve ikili ağaç?● Bağlantılı Liste: Liste tüm giriş noktaları sonraki öğeye, sayısınırsız elemanları, kolayca öğeleri değil, doğrudan ekleyinEndeks erişilebilir, arama alıcı● ikili ağaç: her giriş iki giriş (Sortierung!) kadar olanBağlantılı liste ile karşılaştırıldığında arama daha verimli ve ekliyorkarmaşık


Nasıl veri yapıları yönettiği grafikler ile birlikte mi?Hemen hemen tüm özyinelemeli veri yapıları yönettiği grafikler elde edilebilirgöstermektedir. Bu grafik özellikleri olanların uygunVeri yapıları.


Nasıl özyinelemeli yöntemleri gelen iteratif yapmak(İç içe değil)?Yöntemleri yerel iteratif beri yinelemeli yöntemler, genellikle çok kısadırGeçici depolama ihtiyacı için Değişkenler, yinelemeli yöntemler ise"Bu" kullanmak yapılmıştır. Ayrıca, kaydedebilirkarmaşık koşullu ifadeler. Özyinelemeli kullanırken kontrast elde edilirYöntem, yöntem çağrıları çok sayıda.


Yinelemeli veri yapıları ve özyinelemeli yöntemleri nelerdirortak indüksiyon?Tümevarım ve yinelemeli veri yapıları için, bir temel ihtiyaç. Resmen,indüksiyon yoluyla gerçekleşeceği yönünde herkes için bir çağrının tamamlanmasından sonradikkate belirli özellikleri ile veri öğeleri karşılanmaktadır....? Ancak ne(S 247):İç içe yöntemleri ve özyinelemeli veri yapıları büyük benzerlikler gösteririndüksiyon tarafından. İspat Bu matematiksel yöntemDoğal sayılarda göre. Biz kanıtı olduğunu ifadesayı 1 (veya 0). Eğer varsayımı altında bu deyimiO zaman, n + 1 için, herhangi bir doğal sayı n geçerli olduğuaslında herhangi bir doğal sayı n için de geçerlidirİndüksiyon tabanı ve indüksiyon adım programlama de vardır. Onay


Nasıl bir algoritma maliyetini tahmin edebilir?Sürekli çaba ne kadar büyük olduğu için, süre ya da ölçebilirsinizBelirlemek için bellek tüketimi.Bu donanım, programlama dili olarak ihmal ayrıntılarıUygulama veya veri ve hesaplar yaklaşık kaç işlem başına miktarıVeri elemanı, yapılabilir olduğunu numarası ile işlem sayısı olarakveri elemanları ile bağlantılıdır.



O (1), nelerdir O (log (n)), O (n), O (n (log (n)), O (n ^ 2) ve O (n ^ 2)?Iki katına ya da yüz kat artışın etkisi nedirn out?● O = tarafindan: at n öğelerin miktarını belirtir● O (1): Sabit● O (log (n)) logDoğrusal ● O (n)● O (n (log n)): süper doğrusal● O (n ^ 2) kare● O (2 ^ n): üstel● Etki: bağlıdır kaç kitabı bir işlem ile ilgiliuygulanan, ancak kaba maliyet tahmini (100 aynı kalır oldu* N hala doğrusal, (100 * n) ² türüne bağlı olarak) vb hala kareçaba çok daha yüksek, ancak n yüksek değerler için kullanılabilirProgramın yürütülmesi sırasında ortaya çıkan giderler.


Neden maliyet tahmini sabit faktörleringöz ardı?Bu n büyüklüğüne ancak herhangi bir etkisi büyüme içinToplam maliyet. Bu ücretleri başka türlü tarafından "hakim" dir.




Olarak ekleme veya arama maliyeti nedirbağlantılı liste, ikili ağaç, hem de karma tablo içindeOrtalama ve en kötü durumda? Ne her durumda en kötü vemeydana geldiğinde bu?● Bağlantılı Listesi: Ara: O (n) / O (n) ekleyin: O (1), en kötü durumda: TümListesinde kontrol edilmelidir16● İkili ağaç arama: O (log (n)) / O (n), en kötü durum, ağaç listeye eğerdejenere; Ekle: O (log (n)) / O (n), en kötü durum, ağaç listeye eğerdejenere● karma: Arama: hemen hemen sabit / O (n) eklemek, O (1), en kötü durumda, eğerTüm karma değerler eşittir.



Bir kabarcık-sıralama nasıl sıralama ve quicksort birleştirme nedir? Neortalama ve en kötü durumda maliyeti nedir?● bubblesort: Listede yürüyüş ve iki komşu elemanları takas, eğerSıra değiştirmek için neden değil, başka nedenler O (n ²) /O (n ²)● mergesort: nurmehr tek tek öğeleri kadar parçalar dizi öğeler eklemek(düzeyine göre seviye) tekrar bir araya sırası doğru, O (n (log n)) / O (n (logn))● quicksort: sadece küçük elemanlar sol bir eksen elemanı (hisse miktarı), seçinbüyük elemanları, tüm özyinelemeli aramanın dönüş elemanı sağ olarakDoğru sırayla elemanları, O (n (log n)) / O (n ²)



Bir ikili arama nedir?Kökten başlayıp, küçük gerekli unsurudur, set arama sol düğümü devam ediyoraksi halde sağ, vb ..


Ne genel genel olmayan sınıflar farklıdır?Genel: kod belirli bir türde bağımsız tutulacakve böylece genelleştirilmiştir.İlgili tarafından genel sınıflarda genel türlerbelirtilen tür değiştirir. Her tür için, genel sınıf bir kopyasınıyarattı. Genel sınıflar sadece derleyici (?) Ise yarattı mı vargenel olmayan sınıflar derleyici tarafından kabul edilecek olduğu gibi.


Ne tür parametresi ile bir tür ayıran? Eğer CanTürleri ve tür parametreleri, aynı kullanabilir miyim?● Tür: çalışma zamanı tür parametresi olarak yerini beton türü,● Type parametresi: hayır türünde beton türüne göre değişecek



Bu tür genel olarak int öğe türleri gibi nasıl olabilir ilkel türleriKaplar kullanılmalıdır?Biz boolean karşılık gelen referans türü "tamsayı" (kullanım: "boolean";Çift: "Çift "...) (s. 276)Gereken otomatik olarak ilgili referans türüne dönüştürmeyürütülmektedir.


Ne engeller genericity bağlıdır?Ilanı ile bir tür parametresi bir engel olarak bir tür eklenir.
sadece bir alt tipi ile sınır type parametresi ile bağlı olabilirBariyer değiştirilebilir.


Özel özyinelemeli bağlı genericity amacı nedir?Bu eşit şekilde bize resmi parametrelerin türlerini kısıtlamak sağlarYöntem olduğu sınıflar.



Ne ölçüde benzer alt tip ilişkiler ve genericity vardır? Vasıtasıylaonların uygulanabilirliği farklılık?



Onlar ve neden kullanmak yineleyiciler nelerdir?Bir konteyner unsurlarının okuma sırası kolaylıkla sağlar.



Ne zorluklar yineleyiciler uygulanmasında ortayaGenellikle yineleme ile ilgili? Bunu nasıl çözerim?Her Bulunan öğeyi sonra Wander çünkü Özyineleme mümkün değildiriptal ve sonraki bir sonraki arama başlayana kadar tekrar devam edilmelidirolabilir. (S 286)Programlama dilleri, programcı için görünmez bir yığın kullanırolan da dahil olmak üzere, iç içe yöntem çağrıları değişkenleri depolamak içinözyinelemeli çağırır.



Ne tarafından özel bir dil inşa Java kullanımını desteklerYineleyiciler?iç sınıflar


Zor programın bitmiş parçaların kullanımı nedir?


Nasıl nedenleri ele alabilir?Güven ● eksikliğiBilgi ● eksikliği● Farklı Modeller● düşünce tarzı "I can do better"Güven ve bilgi eksikliği daha fazla odaklanarak önlenebilirProgram bileşenleri hakkında bilgi verir ve eğer uygunsa, parçalarda kendini test eder.



Yukarıdan aşağı stratejisinin avantajları ve dezavantajları karşı nelerdiraşağıdan yukarıya strateji? Nasıl bu iki strateji olabilirbirbiriyle birleştirmek?Yukarıdan aşağıya, bu büyük resmi tutmak daha kolay (örneğin, bir başlarana yöntem ve) alt çalışır. Bu stratejinin dezavantajAncak, bu yaklaşım iyi uygulayan genel olarak yönlendirme değil nesne olduğunuAlt Up gibi. Kombinasyonu örneğin olur yukarıdan aşağıya için bu gibi bakmakörneğin kaba yapı Sınıf hiyerarşisi kadar Bottom sonra kullanılır veTek tek sınıfları Ausprogrammierung.



Hangi görevleri ilerici arıtma sağlamaktır?büyük işler, büyük programlar


Sorunların hangi bölümü, adım adım ayrıntılandırmasıyla gerektiğinibaşlar? Bu neden böyledir?Bu çözmek için en zor olanlar ile başlamalı ve bu da engelmesi muhtemeldir.


Avantajları ve zorlukları yavaş yavaş ne ortaya çıkabilecek olanArıtma sonucu?● Avantajları: programın geçerli kalitesi hakkında iyi bir geri besleme, hangidaha da geliştirilmesi için yararlı sırayla (deneyim ile giderÜzerinde Geliştirme) gereksinimleri değişecek esneklik● Dezavantajları: Programın bir uzantısı olarak, sorunlara neden olabilirBu fark ne zaman geldiği seçilen veri yapıları veProgramın yeni bölümü için çarpanlara uygun veya yeterli değilvardır.