Bruce Eckel felsefesi java 5 sürümü pdf. Vikikitaplar Java Felsefesi. Bruce Eckel'den Java Felsefesi Hakkında
Java okuyanların çoğunun bunu Bruce Eckel'in ünlü kitabının yardımıyla yapmaya başladığını varsayarsak büyük olasılıkla yanılmayacağım: "Java'da Düşünmek"Rusça baskısında şu şekilde bilinir: "Java Felsefesi"... Ne yazık ki, elektronik biçimde (Rusça), en yaygın olanı, uzun süredir alaka düzeyini yitirmiş olan Java 1.1 sürümüne dayanan bu kitabın 2. baskısıdır. Java'nın sonraki sürümlerinde (ve özellikle Java SE5'te) ortaya çıkan yenilikler oldukça önemliydi, bu da kitabın dördüncü baskısında (çevirisi Rusça olarak yayınlandı) ciddi bir revizyona yol açtı. Bununla birlikte, okunması kolay (ve en önemlisi, hızlı arama için) elektronik formatta, bu baskının Rusça versiyonu mevcut değildi. Ben de bu boşluğu doldurmaya ve bu popüler kitabın tam bir versiyonunu "wikibooks" formatında üretmeye karar verdim. Bu dildeki programlamanın hemen hemen tüm yönlerini gösteren çok sayıda mükemmel örnek olması nedeniyle bu bilginin sadece dil öğrenenler için değil, aynı zamanda Java'da çalışan herkes için de ilginç ve faydalı olacağına inanıyorum. Özellikle nadiren kullanılan Java özellikleri söz konusu olduğunda.
Vikikitaplar "Java Felsefesi" şurada yayınlandı:
"Hareket Halinde Bahar"
Seriden kitaplar "..... Eylemde" (genellikle PDF formatında ve genellikle İngilizce olarak) belirli çevrelerde haklı olarak popülerdir :) Bunların arasında geniş kapsamlı Talmud'lar vardır. "JSTL İş Başında" (okunması kolay ve orta düzeyde İngilizce bilgisine sahip, ancak konuyla ilgili iyi bir referans kitabının rolü için uygun) ve daha mütevazı el sanatları, örneğin "Dikmeler İş Başında" ("her şey altın değildir ..."). Kitap "Hareket Halinde Bahar" yine de bu listede "ağır sikletler" kategorisinden ve kelimenin her anlamıyla. "Akıcı İngilizce" bilmeden okumak muhtemelen kolay değildir. Ve mesele, sunulan malzemenin karmaşıklığında değil (karmaşık değil), ortaya çıktığı gerçeğinde - aşırı derecede "İngiliz-sanatsal" ya da başka bir şey .... Lirik aralar, sloganlar, kelime oyunları ve diğer şeylerle dolu falan filan, dil yazarlar bu el kitabını (orijinal dilde) okumayı çabucak sıkıcı bir süreç haline getiriyor. Ancak diğer yandan, kelimenin "çizmek"(genellikle - "çiz") "buradan çıkar" anlamına gelir (yanıyor - "çek, sürükle"). Sonuç olarak (kitapta benimsenen genel sunum tarzını dikkate alarak) anlamak tam anlam gibi ifadeler: "... Bahar bu veriyi çiz ..." aynı zamanda olur - kolay değildir ve aşırı derecede gerekli. Bu nedenle, çevirmediğim bölümlerin okuyucuları, bu gibi durumlarda yazarların ne istediklerine kendi başlarına karar vermek zorunda kalacaklar: bir dosyanın oluşturulması (kaydedilmesi) hakkında şiirsel bir şekilde ifade etmek veya onu okumayı şakacı bir şekilde anlatmak.
Bu kitap, kişisel kullanım için açık bir referans olarak PDF'den wikibook'a dönüştürüldü. Bu nedenle, çeviri tam değil, yalnızca yeterli coşkunun olduğu yerlerde. Bölümlerin geri kalanı basitçe hızlı bir şekilde bulunacak şekilde yerleştirildi. HER ŞEY "olduğu gibi" olarak yayınlandı ve Rusça metnin kalitesi suçlanmamalı ... Ben profesyonel bir çevirmen değilim ve bir edebiyat editörüm de yoktu. Belki de kitabın bazı bölümlerini ve bölümlerini çevirmediğim için (ve bunları çevirmeyi bile planlamadığım için) birini hayal kırıklığına uğratabilirim, ancak onu gelecek nesiller için saklı tutmalıydım.
Vikikitap "Hareket halinde bahar " şurada yayınlandı:Programlama, en çok talep edilen BT hizmetlerinden biridir. Pek çok insan bu zor endüstri hakkında bilgi edinmeye ve bu yönde çalışmaya başladı. Okuyucu her zaman programlamayla ilgilenmişse, ancak nereden başlayacağını bilmiyorsa, "Java Felsefesi" kitabı bu konuda mükemmel bir başlangıç \u200b\u200byardımı olacaktır. Yazar Bruce Eckel, bilgisayar teknolojisinde gerçek bir profesyoneldir ve anlaşılır bir sunumun yardımıyla program koduyla çalışmanın temel ilkelerini hızlı bir şekilde açıklar.
Java dili, dünya çapında en popüler programlama dillerinden biri olarak kabul edilir. Bunun nedeni, yüksek esnekliği ve oyunlar, yazılım vb. İle ilgili hemen hemen her alanda uygulama olasılığıdır. Java Felsefesi başlangıç \u200b\u200bkitabı, temel kavramlarda ustalaşmanıza yardımcı olacak ve daha derine inmek için mükemmel bir temel oluşturmanıza olanak tanıyacaktır. programlama biliminin mükemmel çalışması. Bruce Eckel, yüzlerce yaşayan örneğe atıfta bulunarak ve kitabının seyri boyunca tüm önemli noktaları derinlemesine açıklayarak gerçekten muazzam bir iş çıkardı. Bu kılavuzun yardımıyla, Java dilini öğrenmek isteyen herhangi bir kullanıcı mükemmel bir bilgi tabanı oluşturabilir ve zaten buna güvenerek derinlemesine bir çalışmaya başlayabilir.
Yazar, kitabını yeni başlayanlara ve temel Java programlaması yapmaya yeni başlayan kişilere okumayı tavsiye ediyor. Java Felsefesi, Java'nın temellerini öğrenmek için hızlı ve kaliteli bir kılavuzdur. Kitap, arayüz ve temel ayarlardan başlayıp, yazarın yorumlarıyla komutlar ve anlaşılır kodlar kullanılarak gerçek bir örnekte gösterilen karmaşık kombinasyon ve tekniklerle biten tüm küçük şeylere ve inceliklere dikkat ediyor.
Bruce Eckel, Java'yı iş, iş ve diğer alanlarda kullanmanın ana amacına ve felsefesine odaklanmanıza yardımcı olacaktır. Yazar ayrıca birçok sorun örneği gösterir, bunların ortaya çıkmasının nedenleri ve program kodundaki sorunları gidermek için ana yöntemler hakkında konuşur. Java dilini daha iyi öğrenmenize yardımcı olacak bir eğitim kitabı olduğu için programlama alanında çalışan profesyoneller "Java Felsefesi" kitabını çok takdir ettiler. Bu özel bir literatür olmasına rağmen, benzer yöndeki diğer kitaplara göre okumak çok daha kolaydır.
Edebiyat sitemizden Bruce Eckel'in "Java Felsefesi" kitabını farklı cihazlara uygun formatlarda ücretsiz olarak indirebilirsiniz - epub, fb2, txt, rtf. Kitap okumayı ve her zaman yeni çıkanlara göz kulak olmayı seviyor musunuz? Klasikler, modern bilim kurgu, psikoloji edebiyatı ve çocuk yayınları gibi çeşitli türlerde geniş bir kitap koleksiyonumuz var. Ayrıca, acemi yazarlar ve güzel yazmayı öğrenmek isteyenler için ilginç ve bilgilendirici makaleler sunuyoruz. Ziyaretçilerimizin her biri kendileri için yararlı ve heyecan verici bir şeyler bulabilecek.
Bölüm 11. Nesne Koleksiyonları
Sorular
1. Koleksiyon arayüzü nedir?
Cevap
Koleksiyon arayüzü, tüm sıralı kapların ortak işlevselliğini tanımlayan kök arayüzdür (p. 301).
2. Kaplar ilkelleri saklamak için kullanılabilir mi?
Cevap
Temel öğeler, kap öğeleri olarak hareket edemez. Bir konteynere yalnızca nesne referansları yerleştirilebilir. Bununla birlikte, Otomatik Kutulama mekanizması ilkeli otomatik olarak bir nesne türüne dönüştürür. Bu nedenle, programcı yukarıdaki sınırlamayı "unutabilir".
(MrD ile paylaşılır)
3. ArrayList kabına hangi öğe ekleme yöntemi tercih edilir:
Arrays.asList veya Collections.addAll ve neden?
Cevap
Collections.addAll üstün performansından dolayı tercih edilmektedir (s. 282).
4. ArrayList ile çalışırken kullanılabilen birkaç yöntemi listeleyin.
Cevap
"İçerir (Nesne o)" - dizide bir öğenin varlığını kontrol edin.
"IndexOf (Nesne o)" - öğenin dizinini alın.
"Alt Liste (dizin1, dizin2)" - bazı öğeleri yeni bir kaba kopyalayın.
"ContainsAll (Nesne o)" - kaptaki öğelerin varlığını kontrol edin.
5. Queue türündeki bir kapsayıcı için remove () yöntemi neyi döndürür?
Cevap
Queue.remove () yöntemi yalnızca kuyruğun başını kaldırmakla kalmaz, aynı zamanda dize değerini de döndürür.
6. LinkedList ile çalışırken, ArrayList'e kıyasla hangi işlemler daha hızlıdır?
Cevap
Bir listenin ortasından öğe eklemek ve çıkarmak LinkedList ile daha hızlıdır (p. 291).
7. LinkedList ile ne tür konteynerler uygulayabilirsiniz?
Cevap
Yığın, sıra, sıraya koyun.
8. Set kapsayıcı ailesinin Liste kapsayıcı ailesinden farkı nedir? (düzenleme için MrD'ye teşekkürler)
Cevap
Set kapsayıcı ailesinde, veriler yalnızca bir durumda depolanabilir (s. 294)
9. Küme içinde zaten mevcut olan bir elemanı eklemeye çalışırken bir istisna atılacak mı?
Cevap
Hiçbir istisna olmayacak.
10. PriorityQueue kapsayıcısının Queue'dan farkı nedir?
Cevap
PriorityQueue'daki öğeler belirli kurallara göre sıralanabilir.
11. Karşılaştırıcı, PriorityQueue'ya uygulandığında ne için kullanılır?
Cevap
Karşılaştırıcı, PriorityQueue öğeleri için sıralama kurallarını belirlemenize olanak tanır.
12. "Ağaç" ve "Karma", "LinkedHash" önekleri, örneğin, Set kapsayıcı tipi (TreeSet, HashSet, LinkedHashSet) için ne anlama geliyor?
Cevap
"Ağaç" ön eki, kabın öğelerinin sıralı düzende depolandığı anlamına gelir
(örneğin, alfabetik olarak veya artan) "Karma" öneki, kabın örneklemeyi hızlandırmak için karma oluşturma uyguladığı anlamına gelir. "LinkedHash" öneki, hızlı erişim sağlarken öğelerin yerleştirme sırasına göre kapta saklandığı anlamına gelir (s. 309)
13. "Harita" konteyneri yinelenebilir arayüzü destekliyor mu?
14. foreach sözdizimi bir "Harita" kapsayıcısı için çalışır mı?
Cevap
"Harita" türündeki bir kapsayıcı için foreach sözdizimi, yinelenebilir arayüzü desteklemediği için çalışmaz.
15. Bir konteynerin öğelerine erişmek için bir yineleyici kullanmanın temel avantajı nedir?
Cevap
Bir yineleyici, çeşitli kap türleri için kullanılabilir (s. 290).
16. ListIterator normal yineleyici üzerinden hangi yeni özellikleri sağlıyor?
Cevap
ListIterator, öğelere sıralı erişim sağlar, yalnızca kabın başından sonuna kadar değil, tersi de geçerlidir (p. 290).
Egzersizler
11. 1. Bir sınıf Fruit oluşturun. Sınıf, bir int ağırlık alanı, bu alanı başlatan bir yapıcı ve ağırlık değerini yazdıran bir printWeight () yöntemi içermelidir.
Ana yöntemde, Liste kabına bazı Meyve nesneleri ekleyin. Aşağıdaki yollarla nesnelerin her biri için printWeight () öğesini çağırın:
A) get () yöntemini kullanarak;
B) bir yineleyici kullanmak.
Cevap
// Fruit.java public class Fruit (özel int ağırlık \u003d 0; public Fruit (int ağırlık) (this.weight \u003d weight;) public void printWeight () (System.out.println ("Ağırlık:" + ağırlık); )) // Apply.java import java.util. *; public class Apply (public static void main (String args) (Liste
11.2. 11.1'den itibaren Fruit sınıfını bir harita kabına yerleştirin. Anahtar olarak sahibinin adı ve değer olarak Meyve türünden bir nesne belirtilsin. Her Fruit nesnesi üzerinde bir anahtar yineleme uygulayın ve bulunan nesnede printWeight () yöntemini çağırın: foreach kullanarak; bir yineleyici kullanarak.
Cevap
Kompakt yineleyici çözümü için quarantino sayesinde.
Meyve sınıfı - bkz. görev 11.2
Java.util. *; java.util.Map.Entry dosyasını içe aktarın; public class Apply (public static void main (String args) (// Sıralama gerekmediğinden HashMap kullanın Harita
11.3. PriorityQueue için Karşılaştırıcıyı kullanarak, dize değişkenlerinin boyuta göre sıralandığından emin olun.
Cevap
Not: Örnek internetten alınmıştır.
// StringComparator.java import java.util.Comparator; public class StringComparator Comparator uygular
Orijinal kitaptan alıştırmaların çevirisi:
11.4. Bir int gerbilNumber alanı ile yeni bir Gerbil sınıfı oluşturun. Alanın bir kurucu ile başlatılmasına izin verin. Ayrıca, "Atlanan Gerbil sayısı:" ve gerbilNumber değişkeninin değerini yazdıran bir atlama () yöntemi oluşturun. Gerbil nesnelerini ArrayList kabına yerleştirin. Listede yineleme yapmak için bir get () yöntemi uygulayın, bu nesnelerin her birinde hop () yöntemini çağırın.
11.5. SimpleCollection.java'yı "c" değişkeni için Set yöntemini kullanacak şekilde değiştirin. İç sınıfları / Sıra.java'yı değiştirin, böylece istediğiniz sayıda öğe eklenebilir.
11.6. En sevdiğiniz film karakterlerinin (String nesneleri) adlarını listeleyen bir Generator sınıfı yazın. Bu listedeki her nesnenin next () yöntemi ile döndürülmesine izin verin. Oluşturulan listenin sonuna geldiğinizde, listenin başına geri dönmeniz gerekir.
ArrayList, LinkedList, HashSet, LinkedHashSet, TreeSet gibi kapsayıcıları doldurmak için Generator sınıfını kullanın. Dizilerin her birinin içeriğini yazdıran genel bir yöntem yazın.
11.7. Evcil Hayvanlar yerine Tamsayılar kullanmak için ListFeatures.java'yı değiştirin. Bu değişiklikten kaynaklanan performans farklılıklarını açıklayın.
11.8. ListFeatures.java için Egzersiz 11.7'yi tekrarlayın, ancak Petleri Dizelerle değiştirin.
11.9. Başka bir sınıfın ilklendirilmiş nesne dizisini oluşturan bir sınıf oluşturun. Liste kabını doldurmak için bu diziyi kullanın. List için subList () kullanarak başka bir kap oluşturun. Ardından, subList () ile aldığınız öğeleri, onları aldığınız kapsayıcıdan kaldırın.
11.10. Farklı kapları ve yöntemlerini kullanma konusunda eğlenceli bir egzersiz (kendim icat etti)
Başta 3 unsurdan oluşan bir giderler listemiz olduğunu varsayalım: "yemek", "ilaç", "eğlence". Bu öğeleri Liste kabına yazmanız gerekir ve sıraları değişmemelidir.
1) Kredi geri ödeme maliyetini listeye eklemeyi unuttuğumuzu birden fark ettik. Doğrudan rekor indeksleri kullanmadan "vergi" kaydını "gıda" ve "ilaç" arasına yerleştirmeniz gerekiyor.
2) Kadın, "palto", "restoran" girişleriyle birlikte ayrı bir gider listesi getirdi. Yapacak hiçbir şey yok: masrafları listenin sonuna ekleyin (kendinizi övmemek için).
3) Ancak kayınvalide bize birkaç eşya daha getirdi: “tiyatro”, “ev dekorasyonu” ve “ilaç”. Belki bu noktalardan bazılarına zaten sahiptiniz. Her ihtimale karşı, ilk kabın içeriğini Set türünde yeni bir kaba kopyalayın ve ardından tereddüt etmeden bu öğeleri listenin sonuna ekleyin.
4) Tereddüt etmeden, ilişkisel dinamik giderler haritası oluşturduk
5) Zengin olduk, dramatik bir şekilde tüm harcamaların toplamını% 30 artırmaya karar verdik. Bunu sizin için yapmak için bir yöntem yazın.
6) Durun! Bize yeter "ev dekorasyonu!" Ve belki de palto için çok fazla harcanıyor. Bu öğeleri yeni bir Listeye ekleyin ve bu sayfayı okuduktan sonra ilgili harcama kalemlerini Harita konteynerinde bulacak ve bunları% 80 azaltacak yönteme geçirin!
7) Kayınvalide için bazı masrafları bırakalım. Üstelik ona bir sürpriz yapalım! Başlangıç \u200b\u200bve bitiş endekslerini belirleyecek iki rastgele sayı oluşturalım, aralarındaki tüm masraflar ayrı bir Listeye kaydedilecek (daha sonra kayınvalidesi tarafından kaymış olacak). Haritadan ilgili masraf kalemlerini kaldırarak güncellemeyi unutmayalım.
8) En az harcama tutarının neye harcandığını belirleyen bir yöntem yazalım, bu harcamaların adını yazdıralım ve bu kalemi gururla listeden çıkaralım.
9) Ancak, ek sarf malzemeleri bize yığıldı: "yemek" ve "restoran", başka bir dizi şeklinde dekore edilmiş! Bu öğelerin listemizde olup olmadığını kontrol edelim mi? Ve en az bir masraf varsa, o zaman hiçbir durumda onları eklemeyeceğiz! Bunların hiçbiri yoksa, o zaman (yapılacak bir şey yok), bu öğelerin ikisini de aynı anda ekliyoruz (ne kadar acıktım!).
10) Biz deliyiz! Kalan harcamalarımızın tüm Tamsayı toplamlarını Harita listesinden okuyalım, bunları bizim için artan sırada sıralayacak bir "bir miktar" konteynere yazalım, sonra onları öfkeyle karıştırıp ters sırada silelim, bunun için özel bir yineleyici kullanarak öfkeyle.
Java Felsefesi Bruce Eckel
(Henüz derecelendirme yok)
Başlık: Java Philosophy
Bruce Eckel'den Java Felsefesi Hakkında
Bruce Eckel, programlama dili üzerine birkaç kitabın yazarı olan olağanüstü bir programcıdır. Karmaşık kavramları basit bir dille açıklarken çalışmaları hızla popüler oldu. Birçok kişinin programlamayı sıfırdan öğrenmesine ve bu alanda başarılı olmasına yardımcı oldular. Yazar, çalışmaları için birden fazla ödül aldı. Kitapları eleştirmenler tarafından her zaman sıcak karşılandı ve daha derinlemesine farklı programlama dilleri öğrenmek isteyenler yeni çalışmasını dört gözle bekliyorlardı. Yazarın en ünlü kitabı "Java Felsefesi" dir. Çok sayıda satıldı ve birkaç kez yeniden basıldı. Şimdi bile, on yıldan fazla bir süre sonra, bu çalışma profesyonel bir programcı olmak isteyen herkes için okunması gereken bir kitap.
Yazar, "Java Felsefesi" adlı kitabında bu programlama dilinin sırlarını ortaya koymaktadır. Ona canlı bir şey olarak bakmayı tavsiye ediyor. Programlama dilinin gelişmekte olduğunu ispatlayan ustaca örnekler verir, ona çeşitli eklemeler yapılır. Herhangi bir süreci tanımlamak için kullanılabilir.
Acemi programcıların çoğu Java mantığını anlayamaz. Yazar, okuyuculara bunun ne olduğunu anlaşılır bir şekilde açıklamaya çalışıyor. Bunu anladıklarında, çökmeyecek ve uzmanların kafasını karıştırmayacak programlar yazmaya başlamak çok daha kolay olacaktır. Yazarın deneyimi sayesinde, genellikle programcılar tarafından yapılan hataları bağımsız olarak tanımlamak ve düzeltmek daha kolay olacaktır. Java programlama dilinin daha derin bir şekilde incelenmesi ve anlaşılması, daha önce imkansız görünen bakış açılarını açacaktır.
Bruce Eckel, Java Felsefesi'nde karmaşıklıkları basit terimlerle açıklamaya çalıştı. Okuyucuların terimlerle karıştırılmasını önlemek için, onları doğa ve günlük durumlarla ilişkilendirir. Böylece, yararlı bilgiler daha hızlı ezberlenir ve sonsuza kadar bir kişide kalır. Zor durumlar ortaya çıktığında, hikayeyi kitaptan hatırlar ve kullanır.
"Java Felsefesi" kitabındaki Bruce Eckel tüm deneyimini aktarmaya çalıştı, bu yüzden her şeyi raflara koydu. Okuyucular sadece onu emebilir ve günlük işlerinde kullanabilir. Kitap sayesinde, yaygın hataların çoğundan kaçınabilecek ve mükemmel bir programcı olacaksınız. Yazarın çalışması, birçok kişinin Java'nın nasıl çalıştığını anlamasına, harika programlar yazmasına ve yazılımı geliştirmesine yardımcı oldu.
Kitaplarla ilgili sitemizde kayıt olmadan siteyi ücretsiz olarak indirebilir veya Bruce Eckel'in çevrimiçi Felsefesi kitabını iPad, iPhone, Android ve Kindle için epub, fb2, txt, rtf, pdf formatlarında okuyabilirsiniz. Kitap size çok güzel anlar ve okumaktan gerçek bir zevk verecektir. Tam sürümü ortağımızdan satın alabilirsiniz. Ayrıca, burada edebiyat dünyasından en son haberleri bulacaksınız, en sevdiğiniz yazarların biyografisini bulacaksınız. Acemi yazarlar için, kendi elinizi edebi becerilerde deneyebileceğiniz, faydalı ipuçları ve püf noktaları, ilginç makaleler içeren ayrı bir bölüm var.
Varsayılan belgeyi değiştirmek için "blank.fb2" dosyasını manuel olarak düzenleyin.
Önsöz 13
Java SE5 ve SE6 14
Teşekkür 14
Bölüm 1. Nesnelere Giriş 17
Soyutlamanın gelişimi 18
Nesne arayüze sahiptir 20
Nesne hizmet sağlar 22
Gizli gerçekleşme 23
Uygulamayı yeniden kullanma 24
Kalıtım 25
Değiştirilebilir Nesneler ve Polimorfizm 29
Tek kök hiyerarşisi 33
Konteynerler 33
Parametreli Tipler 35
Nesnelerin oluşturulması, kullanılması ve yaşam süreleri 36
İstisna İşlemi: Hatalarla Başa Çıkma 38
Paralel yürütme 38
Java ve İnternet 39
Bölüm 2. Her Şey Bir Nesnedir 48
Tüm nesneler açıkça oluşturulmalıdır 49
Nesnelerin asla silinmesi gerekmez 53
Yeni Veri Türleri Oluşturma 54
Yöntemler, Bağımsız Değişkenler ve Dönüş Değerleri 56
Java Programı Yazma 58
Statik 60 anahtar kelime
İlk Java Programımız 61
Yorumlar ve Satır İçi Belgeler 64
Programlama stili 70
Bölüm 3. Operatörler 71
Basit Yazdırma Komutları 71
Java Operatörleri 72
Değişmezler 82
Java'da sizeof () 92 eksik
Özet 100
Bölüm 4. Kontrol yapıları 101
Foreach sözdizimi 105
ara ve devam et 108
Kötü Takım 109'a git
Özet 115
Bölüm 5. Başlatma ve Tamamlama 116
Yapıcı, başlatmayı garanti eder 116
Yöntem Aşırı Yükleme 118
Temizleme: Sonlandırma ve Çöp Toplama 130
Sınıf Üyelerinin İlklendirilmesi 137
Oluşturucu Başlatma 140
Dizileri Başlatma 146
Özet 151
Bölüm 6. Erişim Kontrolü 152
Kitaplık Birimi Olarak Paket 153
Java Erişim Belirteçleri 159
Arayüz ve Uygulama 163
Sınıflara erişim 164
Özet 167
Bölüm 7. Sınıfları Yeniden Kullanma 169
Kompozisyon sözdizimi 170
Devralma Sözdizimi 172
Delegasyon 176
Kompozisyon ve kalıtımı birleştirmek 178
Kalıtıma Karşı Bileşim 184
Yukarı Tip Dönüşümü 186
Nihai 188 anahtar kelime
Özet 197
Bölüm 8. Polimorfizm 198
En iyi dönüşüme dönün. ... ... \u003e 199
Özellikler 201
Oluşturucular ve Polimorfizm 208
Dönüş Tipi Kovaryans 216
Kalıtım ile Geliştirme 217
Özet 220
Bölüm 9. Arayüzler 221
Soyut Sınıflar ve Yöntemler 221
Arabirimler 224
Arayüzü Uygulamadan Ayrıştırma 227
Bir Arayüzü Kalıtım Yoluyla Genişletme 233
Bir adaptasyon aracı olarak arayüzler 236
İç içe arayüzler 239
Arayüzler ve Fabrikalar 242
Özet 244
Bölüm 10. İç Sınıflar 245
İç Sınıflar Oluşturma 245
Dış sınıf 246 ile iletişim
Tasarımlar. Bu ve yeni 248
İç Sınıflar ve Yukarı Akış 249
Adsız İç Sınıflar 253
İç sınıflar: neden? 261
İç Sınıflardan Devralma 272
İç sınıfı geçersiz kılmak mümkün mü? 272
Yerel İç Sınıflar 274
Özet 276
Bölüm 11. Nesne Koleksiyonları 277
Parametreli ve Tipli Konteynerler 277
Temel kavramlar 280
Öğe Grupları Ekleme 281
Yineleyiciler 288
294 ayarla
Sıra 298
Öncelik Sırası 299
Toplama ve Yineleme 301
Yöntem Bağdaştırıcı Deyim 306
Özet 309
Bölüm 12. Hata Giderme ve İstisnalar 310
Başlıca istisnalar 310
İstisnaları Yakalamak 312
Kendi İstisnalarınızı Oluşturma 314
İstisna Teknik Özellikler 319
Keyfi İstisnaları Yakalama 320
Java Standart İstisnaları 328
Nihayet 330 ile tamamlama
Nihayet dönüş 334 ile kullanma
İstisnaların Kullanımına İlişkin Sınırlamalar 336
İnşaatçılar 339
İstisnaları Belirleme 343
Alternatif çözümler 344
Özet 351
Bölüm 13. Tür Bilgileri 352
Dinamik Tip Çıkarımı İhtiyacı (RTTI) 352
Fabrikaların kaydı 372
Yansıma: Dinamik Sınıf Bilgileri 376
Dinamik aracılar 380
Tanımsız Nesneler 384
Arayüzler ve Tip Bilgileri 390
CV 394
Bölüm 14. Parametrizasyon 397
Kolay parametrelendirme 398
Parametreli 404 arayüzler
Parametreli Yöntemler 407
Bina Kompleksi Modelleri 419
Kısıtlamalar 437
Metakarakterler 440
CV 452
Bölüm 15. Diziler 454
454 Dizinin Özellikleri
Nesne 456 olarak Dizi
Bir diziyi döndürmek 458
Çok Boyutlu Diziler 460
Diziler ve Parametreleme 463
Test Verisi Oluşturma 465
Jeneratörleri Kullanarak Diziler Oluşturma 470
Diziler 474 Yardımcı Araç Seti
Özgeçmiş 482
Bölüm 16. Java 483 G / Ç Sistemi
Dosya 484 sınıfı
Giriş ve çıkış 489
Öznitelikler ve Arabirimler Ekleme 491
Okur ve Yazar Sınıfları 494
RandomAccessFile: kendi başına 497
I / O Akışlarının Tipik Kullanımı 498
Dosya Okuyucular ve Yazarlar 505
Standart G / Ç 507
Yeni G / Ç (nio) 510
Veri Sıkıştırma 531
Nesneleri Seri Hale Getirme 536
Tercihler 553
CV 555
Bölüm 17. Paralel Yürütme 557
Diş sınıfı 559
Sanatçılar 561
Kaynak Paylaşımı 578
İş parçacıkları arasındaki etkileşim 598
Kilit 602
Yeni kütüphane bileşenleri 607
CountDownLatch 607
CyclicBarrier 609
PriorityBlockingQueue 614
Semaforlar 619
Modelleme 624
CV 629
Dizin 631
Nesnelere giriş
Doğayı parçalara ayırırız, onu kavramlara dönüştürürüz ve birçok yönden yaptığımız gibi onlara anlam yükleriz, çünkü hepimiz konuşmaya bağlı bir toplumda geçerli olan ve dilin yapısında sabit olan bir anlaşmanın tarafıyız ... Yapamayız ... bu anlaşma ile belirlenen organizasyon ve veri sınıflandırması ile mutabık kalmak dışında hiçbir şekilde iletişim kurmayacaktır.
Benjamin Lee Worf (1897-1941)
Bilgisayar devrimini makineye borçluyuz. Bu nedenle, programlama dillerimiz bu makineye daha yakın olmaya çalışmaktadır.
Fakat aynı zamanda bilgisayarlar, düşünceleri büyütme aracı (Steve Jobe'nin söylemeyi sevdiği "zihin için bisiklet") ve kendini ifade etmenin başka bir yolu olarak çok fazla mekanizma değildir. Sonuç olarak, programlama araçları makinelere daha az ve zihinlerimizin yanı sıra edebiyat, resim, heykel, animasyon ve sinema gibi insan özlemlerinin diğer ifade biçimlerine daha çok yönelme eğilimindedir. Nesneye Yönelik Programlama (OOP), bilgisayarı kendini ifade etme aracı haline getirmenin bir parçasıdır.
Bu bölüm size temel program geliştirme yöntemlerine genel bir bakış dahil olmak üzere OOP'nin temellerini tanıtacaktır. Bu ve genel olarak kitap, C olması gerekmeksizin, prosedürel bir dilde programlama deneyimine sahip olduğunuzu ima eder. Eğer size bu kitabı okumadan önce C programlama ve sözdizimi hakkında yeterli bilgiye sahip olmadığınız görülüyorsa, C'de Düşünme multimedya seminerini kullanın. siteden indirilebilir