Урок «Модуль 2. Урок 4. Пакеты в Java.» Урок «Модуль 2. Урок 4. Пакеты в Java.» Модуль 2....
Чтобы смотреть видео нужно иметь активную платную подписку и вступить в курс. Войти или зарегистрироваться.

Обязателен к прочтению весь текстовый материал!

Что такое пакеты?

Большая проблема в программировании - проблема коллизии имен. Решается она по-разному в каждом языке.

  • Двигатель
  • СуперОбщий класс - не решение
  • Решение - пакеты (ООП)
  • Разложить классы в разные пакеты
    • имена пакетов разные
    • внутри пакета использовать класс
    • имена в разных пакетах могут повторятся

Пример:

  • transport (главный пакет-предок)

    • air

      • plane
        • engine
    • space

      • rocket
        • engine
    • ground

      • car
        • engine

Как Java работает с пакетами

Какой пакет выбрать для нужной аппликации?

  • Калькулятор? - нельзя, так как конфликт с другими пакетами под таким же именем
  • Доменное имя, которое выбрано для программы - должно быть уникально для веба (www.engines.com), а значит уникальность соблюдена.
  • Доменное имя нужно инвертировать, чтобы использовать его для названия пакета (com.engines).
  • Root пакет - com
  • Пакет первого уровня - engines
  • Подпакеты - plane, car, rocket
  • Каждый пакет - директория ( папка с именем com)
  • Подпакет - директория в директории ( папка с именем engines в папке com)
  • У каждого пакета есть имя, оно эквивалентно пути к пакету
    • Пакет plane --> com.engines.plane

Имена пакетов

  • имя состоит из одного слова (желательно)
  • без заглавных букв (желательно)

Пример

 	mkdir project
 		mkdir src 
			mkdir com
				mkdir test

Как создать класс внутри пакета?

  • класс должен лежать внутри папки, в которой он нужен
  • внутри класс должно использоваться ключевое слово package
  • ключевое слово package должно быть в первой строке кода
  • после package нужно указать полное имя пакета (com.test - в случае существования папки com, но возможен и следующий вариант )
		package world
			package earth
				package humans

					package world.earth.humans;

					public class Human {

						String name;
                                        }

				package buildings

					package world.earth. buildings;

				    	public class House {

						String address;
                                        }

Использование пакетов - импортирование

			public class House { //заготовка

				String address;

				Human owner; 
                       }
  • в классе House существует два поля:

    • address с не примитивным типом String
    • owner c не примитивным типом Human
  • то есть на самом деле тип поля owner - world.earth.humans.Human ---> (|) первый вариант использования классов из других пакетов (имяпакета.имякласса).

			package world.earth.buildings;	

			public class House {

				String address;

				world.earth.humans.Human owner;
                        }
  • правильный вариант использования классов (||) - импортирование!

    • использование ключевого слова import

    • после использования package world.earth.buildings;

    • нужно написать полный путь к нужному классу import world.earth.humans.Human;

         		package world.earth.buildings;

				import world.earth.humans.Human;

				public class House {

				        String address;

				        Human owner;
                                }
  • еще один правильный вариант использования (|||) - import world.earth.humans.*;--> импортировать все классы, которые лежат внутри папки humans, без импорта подпакетов.
			    package world.earth.buildings;

				import world.earth.humans.*;

				public class House {

				        String address;

				        Human owner;
                                }

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

  • использование полного имени пакета + имя класса --> world.earth.humans.Human human =new...
  • импорт конкретного класса --> import world.earth.humans.Human
  • импорт всех классов из пакета --> import world.earth.humans.*
  • использовать static import --> пока не разбираем!

Тип String

  • java.lang.String
  • import java.lang.*
  • но! Java сама импортирует два пакета: пакет java.lang и текущий пакет (все классы, которые лежат в том же пакете, что и класс).
			    package world.earth.buildings;

				import world.earth.humans.*;
				import world.earth.buildings.*;
				import java.lang.*;

				public class House {

				         String address;

				         Human owner;
                                }

Java

  • source path --> input arg | -source
  • class path --> -cp --> файлы с байткодом
  • destination --> -d --> после компиляции в байткод

ЗАКРЕПИТЬ!

Практика, практика, практика... В заданиях к уроку надо выполнить что-то похожее, что было проведено в онлайне.

Полезные ссылки:

Группы для общения: