Книга е още в много ранна фаза на написване


Bruce Eckel’s Hands-On Java Seminar Multimedia CD It’s like coming to the seminar! Available at http://www.BruceEckel.com



страница2/73
Дата25.07.2016
Размер13.53 Mb.
#6732
1   2   3   4   5   6   7   8   9   ...   73

Bruce Eckel’s Hands-On Java Seminar Multimedia CD
It’s like coming to the seminar!
Available at http://www.BruceEckel.com


  • Overhead slides and synchronized audio for all the lectures. Just play it to see and hear the lectures!

  • Entire set of lectures are indexed so you can rapidly locate the discussion of the subject you’re interested in.

  • Special screen-formatted electronic version of Thinking in Java with hyperlinked index and table of contents.


Посвещение

На личността която, даже сега,
създава следващия голям език за програмиране

Конспект


Thinking in Java 2nd edition
Revision 3 1

Конспект 17

Какво има вътре 20

Предговор 1

Въведение 5

1: Въведение в обектите 23

2: Всичко е обект 61

3: Управление хо­да на програ­ма­та 87

4: Инициализация и почистване 137

5: Скриване на реализацията 179

6: Многократно използване на класове 205

7: Полиморфизъм 237

8: Притежаване на обектите 307

9: Обработка на грешки чрез изключения 383

10: Входно-изходна система на Java 417

11: Иденти­фи­ка­ция на типа по време на из­пъл­не­ние 503

12: Подаване и връщане на обекти 527

13: Създаване на прозорци и аплети 571

14: Много нишки 753

15: Разпределена обработка 825

16: Програмиране за фирмата 871

17: Шаблони за проектиране 903

A: Java Native Interface (JNI) 961

B: Насоки за програмиране на Java 971

C: Препоръчва се за четене 977

Индекс 979




Какво има вътре


Thinking in Java 2nd edition
Revision 3 1

Второ издание 3

Bruce Eckel 3

Читателски отзиви: 4

Bruce Eckel’s Hands-On Java Seminar Multimedia CD
It’s like coming to the seminar!
Available at http://www.BruceEckel.com 15

Конспект 17

Какво има вътре 20

Предговор 1

Предговор към 2ро издание 3

Въведение 5

Необходими начални знания 5

Учене Java 6

Цели 7

Онлайн документация 8



Глави 8

Упражнения 14

Мултимедиен CD ROM 14

Сорс 15


Стандарти при кодирането 16

Версии на Java 17

Семинари и наставничество 17

Грешки 17

Бележка по дизайна на корицата 18

Благодарности 19

За Интернет 21

1: Въведение в обектите 23

Абстракцията 24

Всеки обект си има интерфейс 25

Скриване на код 27

Повторно използване на код 28

Наследяване:
повторно използване на интерфейса 29

Подтискане на функциите на базовия клас 30

Отношенията "е" и "прилича на" 30

Взаимозаменяеми обекти с полиморфизъм 31

Динамично свързване 33

Абстрактни базови класове и интерфейси 33

Обекти и техните времена на живот 34

Колекции и итератори 35

Йерархия с един корен 37

Библиотеки от колекции и поддръжка за лесно използване 38

Downcasting и templates/generics 38

Домакинската дилема:


кой ще чисти? 39

Събирачите на боклук срещу


ефективността и гъвкавостта 40

Обработка на изключенията:


работа с грешките 41

Многонишково изпълнение 42

Упоритост 43

Java и Internet 43

Какво е Мрежата? 43

Клиент/сървър обработки 44

Мрежата е огромен сървър 45

Програмиране на клиентската страна 45

Plug-ins 47

Скриптове и езици за тях 47

Java 48

ActiveX 49



Сигурност 49

Internet срещу Intranet 50

Програмиране при сървъра 51

Отделна арена: приложенията 52

Анализ и проектиране 52

Стоим на курса 53

Фаза 0: Да направим план 53

Фаза 1: Какво ще произвеждаме? 54

Фаза 2: Как ще го направим? 55

Фаза 3: Да строим! 56

Фаза 4: Итерация 56

Планирането се изплаща 58

Java или C++? 58

2: Всичко е обект 61

Обектите манипулираме с манипулатори 61

Трябва вие да създадете всичките обекти 62

Къде живее паметта 63

Специален случай: първични типове 64

Числа с висока точност 65

Масиви в Java 65

Никога не се налага да разрушавате обект 66

Обхвати 66

Обхват на обекти 67

Създаване на нови типове данни: class 68

Полета и методи 68

Стойности по подразбиране за примитивни членове 69

Методи, аргументи и връщани стойности 70

Списъкът аргументи 71

Построяване на Java програма 72

Видимост на имената 72

Използване на други компоненти 73

Ключовата дума static 74

Вашата първа Java програма 76

Коментари и вградена документация 79

Коментар на документацията 79

Синтаксис 80

Вграден HTML 80

@see: отнасяне към други класове 81

Директива за документиране на клас 81

@version 82

@author 82

Директиви за документиране на променлива 82

Директиви за документация на метод 82

@param 82

@return 83

@exception 83

@deprecated 83

Пример за документация 83

Стил на кодиране 84

Резюме 85

Упражнения 85

3: Управление хо­да на програ­ма­та 87

Използваме Java оператори 87

Приоритет 88

Присвояване 88

Aliasing при извикване на методи 90

Математически оператори 91

Унарни минус и плюс оператори 93

Авто инкремент и декремент 93

Оператори за отношение 94

Проверка на еквивалентност на обекти 95

Логически оператори 96

Феноменът short-circuiting 98

Побитови оператори 99

Shift оператори 100

Триместен if-else оператор 103

Операторът запетая 104

String операторът + 104

Обичайни капани при използването на операторите 105

Casting оператори 106

Литерали 107

Разширяване 109

Java няма “sizeof” 109

Приоритетът по нов начин 109

Резюме на операторите 110

Управление на изпълнението 120

true и false 120

if-else 121

return 121

Итерация 122

do-while 123

for 123


Операторът запетая 124

break и continue 125

Безславното “goto” 126

switch 131

Детайли на изчислението 133

Резюме 135

Упражнения 135

4: Инициализация и почистване 137

Гарантирана инициализация с конструктора 137

Пренатоварване на методи 139

Различаване на претоварените методи 141

Претоварването и примитивите 142

Претоварване на връщаните стойности 146

Конструктори по подразбиране 147

Ключовата дума this 148

Викане на конструктори от конструктори 149

Значението на static 150

Почестване: финализация и събиране на боклука 151

За какво е finalize( )? 152

Вие трябва да почистите 153

Как работи събирачът на боклук 157

Инициализация на членове 160

Задаване на инициализация 161

Инициализация в конструкторите 163

Ред на инициализация 163

Инициализация на статични данни 164

Явна инициализация на static 167

Инициализация на нестатични екземпляри 168

Инициализация на масиви 170

Многомерни масиви 174

Резюме 177

Упражнения 178

5: Скриване на реализацията 179

package: библиотечната единица 180

Създаване на уникални имена на пакети 182

Автоматична компилация 185

Колизии 185

Библиотека собствени инструменти 186

Капанът с classpath 188

Използване на импортиране за промяна на поведението 188

Относно пакетите 190

Спецификатори на достъпа в Java 191

“Приятелски” 191

public: интерфейсен достъп 192

Пакетът по подразбиране 193

private: не може да пипате това! 194

protected: “вид приятелски” 195

Интерфейс и реализация 196

Достъп до клас 198

Резюме 200

Упражнения 202

6: Многократно използване на класове 205

Синтаксис на композицията 206

Синтаксис за наследяването 209

Инициализиране на базовия клас 211

Конструктори с аргументи 213

Хващане на изключенията на базовия канструктор 214

Комбиниране на композиция и наследяване 214

Гарантиране на провилно почистване 216

Ред при почистването на боклука 219

Скриване на имената 219

Избиране на композиция


vs. наследяване 220

protected 221

Постъпкова разработка 222

Upcasting 223

Защо “upcasting”? 224

Отново композиция vs. наследяване 225

Ключовата дума final 225

Final данни 225

Празни final 228

Final аргументи 229

Final методи 230

Final класове 230

Final предпазливост 231

Инициализация и товарене на класовете 232

Инициализация с наследяване 233

Резюме 234

Упражнения 235

7: Полиморфизъм 237

Upcasting 237

Защо ъпкастинг? 239

Особеността 241

Свързване при извикването на метод 241

Постигане на точното поведение 242

Разширяемост 245

Подтискане vs. претоварване 248

Абстрактни класове и методи 250

Интерфейси 254

“Многократно наследяване” в Java 257

Разширяване на интерфейс с наследяване 260

Групиране на константи 261

Инициализиране на полета в интерфейсите 263

Вътрешни класове 264

Вътрешни класове и ъпкастинг 266

Вътрешни класове в методи и обхвати 268

Връзката към външния клас 274

static вътрешни класове 276

Обръщения към обект от външния клас 278

Наследяване от вътрешни класове 279

Могат ли вътрешни класове да се подтискат? 280

Идентификатори на вътрешния клас 282

Защо вътрешни класове: рамки на управлението 283

Конструктори и полиморфизъм 290

Ред на извикване на конструкторите 291

Наследяването и finalize( ) 293

Поведение на полиморфни методи в конструкторите 297

Проектиране с наследяване 299

Чисто наследяване vs. разширяване 300

Даункастинг и идентификация на типа по време на изпълнение 303

Резюме 305

Упражнения 306

8: Притежаване на обектите 307

Масиви 307

Масивите са първокласни обекти 309

Колекции от примитиви 312

Връщане на масив 312

Колекции 314

Неудобство: неизвестен тип 314

Понякога работи правилно при всички случаи 316

Правене на Vector чувствителен към типа 318

Параметризирани типове 319

Итератори 319

Типове колекции 323

ArrayList 323

Скапване на Java 323

BitSet 324

Stack 326

Map 327

Създаване на “ключови” класове 332



Properties: тип HashMap 335

Пак енумератори 335

Сортиране 336

Колекциите на Java 2 342

Използване на Collectionи 346

Използване на Listове 350

Използване на Setове 354

Използване на Mapове 357

Избиране на реализация 359

Избор между Listове 360

Избор между Setовете 362

Избор между Mapове 364

Неподдържани операции 368

Сортиране и търсене 370

Arrays 370

Comparable и Comparator 372

Listове 374

Ютилита 376

Правене на Collection или Map неизменяеми 376

Синхронизиране на Collection или Map 378

Резюме 379

Упражнения 380

9: Обработка на грешки чрез изключения 383

Основни изключения 384

Аргументи на изключението 385

Хващане на изключение 386

Блокът try 386

Обработчици на изключения 387

Прекратяване vs. продължаване 387

Специфициране на изключението 388

Хващане на кое да е изключение 389

Преизхвърляне на изключение 391

Стандартни изключения в Java 394

Специалният случай RuntimeException 395

Създаване на ваши собствени изключения 397

Ограничения при изключенията 401

Финализиране с finally 404

За какво е finally? 405

Капан: загубеното изключение 408

Конструктори 409

Търсене на обработчик 413

Правила за изключенията 414

Резюме 415

Упражнения 415

10: Входно-изходна система на Java 417

Вход и изход 418

Типове на InputStream 418

Типове OutputStream 420

Добавяне на атрибути и полезни интерфейси 422

Четене от InputStream


с FilterInputStream 422

Писане в OutputStream


с FilterOutputStream 424

Отделен:


RandomAccessFile 425

Класът File 426

A directory lister 427

Анонимни вътрешни класове 429

Сортиран списък на директорията 430

Проверка за и създаване на директории 432

Типично използване на IO потоци 434

Входни потоци 437

1. Буфериран вход от файл 437

2. Вход от паметта 438

3. Форматиран вход от паметта 438

4. Номериране на редове и файлов изход 439

Изходни потоци 439

5. Запазване и възстановяване на данни 440

6. Четене и писане на файлове с произволен достъп 440

Кратък начин за операции с файлове 441

7. Кратък начин за вход от файл 441

8. Кратък път за форматирано писане във файл 441

9. Начин за писане в даннов файл 442

Четене от стандартния вход 443

Скачени потоци 444

StreamTokenizer 444

StringTokenizer 447

IO потоци на Java 1.1 450

Източници и стоци на данни 451

Променяне на поведението на потоците 452

Непроменени класове 453

Пример 453

Генератор на справки 457

Пренасочване на стандартния IO 459

Компресия 460

Проста компресия с GZIP 461

Много файлове със Zip 463

Java archive (jar) утилитито 466

Сериализация на обекти 468

Намиране на класа 472

Управление на сериализацията 473

Ключовата дума transient 477

Алтернатива на Externalizable 480

Промяна на версиите 483

Използване на устойчивостта 483

Проверка на стила 491

Резюме 499

Упражнения 500

11: Иденти­фи­ка­ция на типа по време на из­пъл­не­ние 503

Нуждата от RTTI 503

Обектът Class 506

Класни литерали 508

Проверка преди каст 509

Използване на класни литерали 512

Динамично instanceof 514

Синтаксис на RTTI 516

Рефлексия: информация за клас по време на из­пъл­не­ние 518

Екстрактор на методите 520

Резюме 524

Упражнения 525

12: Подаване и връщане на обекти 527

Подаване на манипулатори 528

Псевдоними 528

Създаване на локални копия 530

Предаване по стойност 531

Клониране на обекти 532

Правене на клас клонируем 533

Използване на трик с protected 534

Прилагане на интерфейса Cloneable 534

Успешно клониране 535

Ефектът от Object.clone( ) 537

Клониране на композиран обект 539

Дълбоко копиране на ArrayList 542

Дълбоко копиране чрез сериализация 543

Добавяне на клонируемост надолу по йерархията 546

Защо този странен дизайн? 547

Управление на клонируемостта 548

Копи-конструкторът 553

Защо работи в C++ и не работи в Java? 557

Класове само за четене 557

Създаване на класове само за четене 559

Недостатъкът на непроменимостта 560

Неизменяеми Stringове 562

Неявни константи 563

Претоварване на ‘+’ и StringBuffer 563

Класовете String и StringBuffer 565

Stringовете са специални 568

Резюме 568

Упражнения 570

13: Създаване на прозорци и аплети 571

Основният аплет 573

Пускане на аплети от Web браузър 574

Автоматична генерация на HTML файлове 576

Използване на Appletviewer 576

Тестване на аплети 577

Правене на бутон 578

Хващане на събитие 579

Текстови полета 582

Текстови площи 583

Етикети 585

Отметки 587

Радиобутони 588

Падащи списъци 590

Списъчни кутии 591

Пана с ушички 593

Кутии за съобщения 594

Менюта 595

Диалогови кутии 596

Управление на разположението 598

FlowLayout 598

BorderLayout 599

GridLayout 600

GridBagLayout 600

BoxLayout 601

Алтернативи на action 604

Ограничения при аплетите 610

Предимства на аплетите 611

Приложения с прозорци 611

Комбинирано прибожение/аплет 613

Менюта 614

Диалогови кутии 618

Файлови диалози 622

Моделът на събитията 624

Типове събития и слушатели 626

Използване на слушателски адаптери за простота 630

Правене на прозорци и аплети 631

Правене на анонимен клас слушател на прозорец 634

Пакетиране на аплет в JAR файл 634

Преразглеждане на по-раншните примери 635

Демонстриране методите на рамката 635

Текстови полета 636

Текстови полета 639

Отметки и радиобутони 642

Падащи списъци 644

Списъци 646

Менюта 648

Диалогови кутии 653

Избиране на изглед и усещане 656

Свързване на събитията динамично 658

Отделяне на основната логика от UI логиката 661

Препоръчвани подходи при кодирането 664

Чертата: добрият начин да го правите 664

Реализиране на главния клас като слушател 666

Смесване на подходите 668

Наследяване на компонент 669

Грозен интерфейс на компонент 675

JFC APIта 681

Цветовете 682

Печатане 682

Печатане на текст 688

Печатане на графика 688

Стартиране на Frameове в аплети 689

Джобът 690

Теглене и Пускане 693

Визуално програмиране и Bean-ове 701

Какво е Bean? 702

Извличане на BeanInfo
с Introspector 704

По-усложнен Bean 710

Пакетиране на Bean 714

По-сложна поддръжка за Bean 715

Повече за Beans 716

Въведение в Swing 717

Ползите от Swing 717

Лесно преобразуване 718

Работна рамка за дисплей 720

Хвърчащи подсказки 721

Ограничителни линии 721

Бутони 722

Групи бутони 723

Икони 725

Менюта 727

Изскачащи менюта 731

Списъчни кутии и комбинирани кутии 733

Плъзгачи и ленти за напредъка 734

Дървета 735

Таблици 737

Панели с ушички 739

Още Swing 741

Използване на URLове от аплет 742

Четене на файл от сървър 744

Инструмент за оглед на методите 745

Резюме 750

Упражнения 750

14: Много нишки 753

Отговарящ потребителски интерфейс 753

Наследяване от Thread 756

Нишковост за отговарящ интерфейс 758

Подобряване на кода с вътрешен клас 760

Комбиниране на нишката с главния клас 763

Правене на много нишки 765

Нишки-демони 769

Споделяне на ограничени ресурси 771

Неправилно ползване на ресурси 771

Как Java споделя ресурси 776

Синхронизиране на броячите 777

Синхронизирана ефективност 781

Java Beans разгледани пак 781

Блокиране 786

Как се блокира нишка 787

Спане 789

Спиране и продължаване 790

Чакай и бъди уведомен 791

Блокиране по IO 794

Тестване 795

Мъртъв блокаж 797

Остарялост на stop( ), suspend( ),


resume( ) и destroy( ) в Java 2 797

Приоритети 802

Групи нишки 807

Управление на групите нишки 809

Runnable отново 814

Твърде много нишки 817

Резюме 820

Упражнения 822

15: Разпределена обработка 825

Идентификация на машина 825

Сървъри и клиенти 827

Тестване на програми без мрежа 828

Port: уникално място в машината 828

Socket-и 829

Прости сървър и клиент 830

Обслужване на много клиенти 835

Датаграми 841

RMI (Remote Method Invocation) 848

Отдалечени интерфейси 848

Реализация на отдалечен интерфейс 849

Установяване на регистъра 850

Създаване на стубове и скелетони 852

Използване на отдалечения обект 853

Въведение в CORBA 854

Основи на CORBA 854

Interface Definition Language (IDL) на CORBA 855

Услуга за имената 856

Пример 856

Написване на IDL сорса 857

Създаване на стъбове и скелетони 857

Реализация на сървъра и клиента 857

Някои услуги на CORBA 859

Активиране на процеса на службата за имената 861

Активиране на сървъра и клиента 861

Java аплети и CORBA 861

CORBA vs. RMI 862

Jini: разпределени услуги 862

Jini в контекст 862

Какво е Jini? 863

Как работи Jini 864

Процесът discovery 864

Процесът на присъединяване 865

Процесът на преглеждане 865

Разделяне на интерфейса и реализацията 866

Абстракция на разпределени системи 867

JavaSpaces 868

Резюме 868

Упражнения 868

16: Програмиране за фирмата 871

Java Database Connectivity (JDBC) 872

Каране примера да работи 875

Стъпка 1: Намиране JDBC драйвера 875

Стъпка 2: Конфигуриране на базата данни 875

Стъпка 3: Проба на конфигурацията 876

Стъпка 4: Генерация на SQL поръчка 877

Стъпка 5: Променете и вмъкнете запитването си 878

GUI версия на преглеждащата програма 878

Защо API-то на JDBC


изглежда така сложно 881

Сървлети 882

Основния сървлет 883

Java Server Pages 885

Основни операции 885

Вграждане на блокове код 886

Извличане на полета и стойности 886

Манипулиране на сесиите в JSP 887

Създаване и промяна на Cookies 888

Предаване управлението на други сървлети 889

RMI във фирмата 890

Corba във фирмата 890

Enterprise Java Beans (EJB) 890

Защо ни трябва EJB? 891

Как да сложа ‘E’-то на съществуващите мои JavaBeans? 892

Компоненти в Enterprise Java Beans 893

EJB Сървър 893

EJB Container 893

Enterprise JavaBeans 893

Session Beans 894

Entity Beans 894

Bean Managed Persistence 894

Container Managed Persistence 895

Bean Managed vs. Container Managed Persistence 895

Описатели на разгръщането 897

JNDI 897


JTA/JTS 897

CORBA 898

Ролите на Enterprise Java Beans 898

Доставчик на Enterprise Bean-овете 898

Монтажник на приложенията 898

Deployer 899

EJB Server/Container доставчик 899

Системен администратор 899

Разработване с Enterprise Java Beans 899

Разработка на прост Stateless Session Bean 900

Разработка на прост Stateful Session Bean 900

Разработка на BMP Entity Bean 900

Разработка на CMP Entity Bean 900

Дискусионни въпроси, интересни проблеми и литература 900

Защо толкова много правила? 900

Какво не е дефинирано в EJB спецификацията 900

Други позовавания 901

Достъп до цялостни услуги 901

Java Naming and Directory Interface (JNDI) 901

Java Messaging Service (JMS) 901

JavaMail 901

Сигурност във фирмата 901

Резюме 901

Упражнения 902

17: Шаблони за проектиране 903

Концепцията за шаблон 903

Синглетонът 905

Класификация на шаблоните 906

Фабрики: капсулиране създаването на обекти 907

Полиморфни фабрики 909

Абстрактни фабрики 912

Шаблонът "наблюдател" 915

Симулиране на рециклатор 918

Подобряване на дизайна 922

“Прави още обекти” 922

Шаблон за създаване на прототипи 925

Trash подкласове 929

Информация за Trash от външен файл 931

Рециклиране с прототипиране 934

Абстракция на използването 935

Многократно диспечиране 939

Реализация на двойното диспечиране 940

Шаблонът “посетител” 946

Повече сдвояване? 953

RTTI считана вредна? 954

Резюме 957

Упражнения 958

A: Java Native Interface (JNI) 961

Java Native Interface 961

Викане на нативен метод 962

Генератор на C хедъри: javah 963

Сигнатури на функциите; имената 964

Прилагане на ваша DLL 964

Достъп до JNI функции:


аргументът JNIEnv 965

Достап до Java стрингове 966

Подаване и използване на Java обекти 966

JNI и изключенията в Java 968

JNI и тредингът 969

Използване на съществуващ код 970

Пътят на Microsoft 970

B: Насоки за програмиране на Java 971

C: Препоръчва се за четене 977

Индекс 979

Bruce Eckel’s Hands-On Java Seminar Multimedia CD
It’s like coming to the seminar!
Available at http://www.BruceEckel.com 993





Сподели с приятели:
1   2   3   4   5   6   7   8   9   ...   73




©obuch.info 2024
отнасят до администрацията

    Начална страница