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 meyveler \u003d Arrays.asList (yeni Meyve (10), yeni Meyve (20)); // bir System.out.println ("Görev a:"); for (Fruit f: meyveler) (f.printWeight ();) // b System.out.println ("Task b:"); Yineleyici it \u003d meyveler.iterator (); while (it.hasNext ()) (it.next (). printWeight ();)))

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 meyve \u003d yeni HashMap (); fruit.put ("Bob", new Fruit (10)); fruit.put ("Meryem", yeni Meyve (20)); // foreach ile yineleme System.out.println ("foreach ile"); for (String key: fruit.keySet ()) (fruit.get (key) .printWeight ();) // bir yineleyici kullanarak System.out.println ("Yineleyici ile"); Yineleyici \u003e it \u003d fruit.entrySet (). iterator (); while (it.hasNext ()) (it.next (). getValue (). printWeight ();)))

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 (@Override public int Compare (String s1, String s2) (if (s1.length ()< s2.length()) { return -1; } if(s1.length() > s2.length ()) (dönüş 1;) 0 döndür; )) // PriorityQueue.java import java.util.Comparator; import java.util.PriorityQueue; public class PriorityQueueUse (public static void main (String args) (Karşılaştırıcı karşılaştırıcı \u003d new StringComparator (); PriorityQueue queue \u003d new PriorityQueue (10, karşılaştırıcı); queue.add ("abcde"); queue.add ("abc"); queue.add ("abcdefghi"); queue.add ("a"); // Kuyruktaki öğeler artan uzunluk sırasına göre DÜZENLENMEZ String System.out.println ("Çıkarmadan önce:"); System.out.println (sıra); // Ancak öğeler kuyruktan artan uzunluk sırasına göre kaldırılır String System.out.println (); System.out.println ("Siparişin kaldırılmasına bakın:"); while (queue.size ()! \u003d 0) (System.out.println (queue.remove ());)))

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 , burada Tamsayı, maliyet kalemlerinin her biri için planlanan maliyetlerdir (tutarları kendiniz seçin).
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