Слайд 1Лекция №5.
по курсу «Несколько активностей»
Москва 2020
Слайд 2Модификаторы доступа
По умолчанию все модификаторы доступа public.
'Generate...' and then
'Getter and Setter'.
Default – это доступ по умолчанию ,
доступность внутри пакета
Слайд 4Пакеты
Исходный код располагается в файлах с расширением .java, а бинарный
– с расширением .class
Используйте == для сравнения два примитива, или
посмотреть,
если два ссылки относятся к тот же объект.
Используйте equals чтобы увидеть если два объекта равны.
Не принято, чтобы классы находились не внутри пакетов
Слайд 5Пакеты
Package – указывает в каком пакете находится данный класс
Слайд 6Отношения между классами
агрегация ( Aggregation );
ассоциация ( Association );
наследование (
Inheritance );
метаклассы ( Metaclass ).
Слайд 8Приложение заметки
Две активности. Одна для ввода текста, другая для его
отображения
Слайд 9Приложение заметки
Две активности. Одна для ввода текста, другая для его
отображения
Слайд 10Интенты
При запуске приложения будет выполняться наша первая активность, CreateMessageActivity. Следующий
шаг — заставить CreateMessageActivity вызывать ReceiveMessageActivity, когда пользователь щелкает на
кнопке Send Message.
Чтобы запустить одну активность из другой, воспользуйтесь интентом. Интент можно рассматривать как своего рода «намерение выполнить некую операцию». Это разновидность сообщений, позволяющая связать разнородные объекты (например, активности) на стадии выполнения. Если одна активность хочет запустить другую, она отправляет для этого интент системе Android. Android запускает вторую активность и передает ей интент.
Intent intent = new Intent(this, Target.class);
Первый параметр сообщает Android, от какого объекта поступил интент; для обозначения текущей активности используется ключевое слово this. Во втором параметре передается имя класса активности, которая должна получить интент.
После того как интент будет создан, он передается Android следующим вызовом:
startActivity(intent)
Слайд 13Интенты
getIntent() возвращает интент, запустивший активность; из полученного интента можно прочитать
любую информацию, отправленную вместе с ним.
Например, если вы знаете,
что интент включает строковое значение с именем “message”, используйте следующий вызов:
Intent intent = getIntent();
String string = intent.getStringExtra("message");
int intNum = intent.getIntExtra("name", default_value);
может использоваться для получения значения int с именем name. Параметр default_value указывает, какое значение int должно использоваться по умолчанию.
Слайд 20Неявные интенты
Заставить пользователя каждый раз предлагать возможность выбора приложения
createChooserIntent
Слайд 22Пример классов
public class Person {
private String firstName;
private String lastName;
private int age;
public Person()
{
}
public Person(String firstName,
String lastName, int age) {
this.firstName = firstName;
this.lastName = lastName;
this.age = age;
}
int – примитивный тип,
String – класс
Integer – ссылочный тип, класс оболочка
Автоупаковка
Слайд 23Переопределение методов
Object – родительский класс для всех классов
Слайд 24Статические методы
Не требуется создавать объект
package box;
public class MyMath {
public static int square(int number)
{
return number*number;
}
}
Синтаксис:
<Имя класса>.<Имя метода>
MyMath.square(40);
При объявлении запретить изменять ее значение – final
Поля, которые не имеют конкретного отношения к объектам
Слайд 25Перегруженные методы, значения по умолчанию, перегрузка операторов
Синтаксический сахар (англ. syntactic
sugar) в языке программирования — это синтаксические возможности, применение которых
не влияет на поведение программы, но делает использование языка более удобным для человека. Переопределение операторов только для интуитивно понятных объектов, например, матриц, не для сотрудников.
int a = Integer.parseInt(s);
Java передает все по значению.
Слайд 26Работа со строками
Извлечение символов и подстрок
Для извлечения символов по индексу
в классе String определен метод char
charAt(int index). Он принимает индекс,
по которому надо получить символов, и возвращает извлеченный символ:
String str = "Java";
char c = str.charAt(2);
System.out.println(c); // v
Сравнение строк
String str1 = "Hello";
String str2 = "hello";
System.out.println(str1.equals(str2)); // false
System.out.println(str1.equalsIgnoreCase(str2)); // true
Поиск в строке
Метод indexOf() находит индекс первого вхождения подстроки в строку, а метод lastIndexOf() - индекс последнего вхождения. Если подстрока не будет найдена, то оба метода возвращают -1:
String str = "Hello world";
int index1 = str.indexOf('l'); // 2
int index2 = str.indexOf("wo"); //6
int index3 = str.lastIndexOf('l'); //9
Слайд 27Работа со строками
Метод startsWith() позволяют определить начинается ли строка с
определенной подстроки, а метод endsWith() позволяет определить заканчивается строка на
определенную подстроку:
String str = "myfile.exe";
boolean start = str.startsWith("my"); //true
boolean end = str.endsWith("exe"); //true
Замена в строке
Метод replace() позволяет заменить в строке одну последовательность символов на другую:
String str = "Hello world";
String replStr1 = str.replace('l', 'd'); // Heddo wordd
String replStr2 = str.replace("Hello", "Bye"); // Bye world
Обрезка строки
Метод trim() позволяет удалить начальные и конечные пробелы:
String str = " hello world ";
str = str.trim(); // hello world
Слайд 28Работа со строками
Метод substring() возвращает подстроку, начиная с определенного индекса
до конца или до определенного индекса:
String str = "Hello world";
String
substr1 = str.substring(6); // world
String substr2 = str.substring(3,5); //lo
Изменение регистра
Метод toLowerCase() переводит все символы строки в нижний регистр, а метод toUpperCase() - в верхний:
String str = "Hello World";
System.out.println(str.toLowerCase()); // hello world
System.out.println(str.toUpperCase()); // HELLO WORLD
Split
Метод split() позволяет разбить строку на подстроки по определенному разделителю. Разделитель - какой-нибудь символ или набор символов передается в качестве параметра в метод. Например, разобьем текст на отдельные слова:
String text = "FIFA will never regret it";
String[] words = text.split(" ");
for(String word : words){
System.out.println(word);
}
Слайд 29Работа со строками
StringBuffer, StringBuilder
StringBuffer – синхронизированный и потокобезопасный
StringBuilder –
не потокобезопасный, но работает быстрее в однопоточных
приложениях
String str = “Java”;
StringBuffer strBuffer = new StringBuffer(strBuffer);
String s1 = " Hello Java. I like Java ";
String[] words = s1.split("\\s|,|!|\\.");
for(String word:words) {
System.out.println(word);
}
Слайд 31Коллекции ArrayList
ArrayList people = new ArrayList();
Scanner keyboard = new Scanner(System.in);
for (int
i=0; i<4; i++)
people.add(keyboard.nextLine());
people.remove(0); // удаляет элемент с индексом 0
people.add(2,"Shamil");
for (String str:people)
System.out.println(str);
Слайд 32Коллекции HashSet, TreeSet
HashSet names2 = new HashSet();
names2.add("Ivan");
names2.add("Petr");
Нет метода get, порядок не
определен
TreeSet храняться в отсортированном виде.
Слайд 33Коллекции
Написать программу в Android Studio, которая отображает форму, где пользователь
вводит количество покупок, есть кнопка «далее», «завершить заказ». При нажатии
на кнопку «далее» вводится следующее значение, при нажатии на кнопку «завершить заказ» показывается форма со всеми введенными значениями.