QA And Automation - Intro to Java

3x Java

  1. Базови конструкции в езика. Класове, обекти и интерфейси.

  2. Полиморфизъм.

  3. Изключения и JUnit

Един курс по Java ~ 4 месеца

Нашата цел е да се запознаете с основните неща, заради JUnit / Selenium.

+ Java
+ Linux
+ Python

Workflow

  1. Гледаме слайдове и четем примерен код.

  2. Решаваме задачи, имплементирайки интерфейси

  3. Качваме задачи в авоматична grading система, като export-ваме .jar

Въпроси за загрявка

Какво е тип на променлива?

"Вида" на данните, които може да складираме.

Въпроси за загрявка

Какво означава статична типизация?

При деклариране на променливите, трябва да укажем типът и. Стойността на тази променлива трябва да се съобразява с нейният тип.

Въпроси за загрявка

Какво означава динамична типизация?

Типът на променливата се "извлича" от нейната стойност.

Въпроси за загрявка

Какво представлява един масив?

Поредица от стойности, събрани под общо име. Може да ги достъпваме по индекс и подредбата ни е гарантирана.

Въпроси за загрявка

Може ли да имаме различни типове данни в един масив?

Зависи от езика на който пишем и неговата типизация.

Въпроси за загрявка

Какво означава "boilerplate"?

Парчета код, без които нашата програма не може да тръгне. В тях няма логика, а по-скоро конфигурация и "setup" на всичко.

Въпроси за загрявка

Какво представлява обектно ориентираното програмиране?

Боравим с класове и обекти. Работим с атрибути и методи.

Въпроси за загрявка

Linux или Windows?

За сега няма значение.

Java 101

  1. Статично типизиран език за ОО програмиране.

  2. Има много boilerplate

  3. Работи в/у виртуална машина. Това му позволява лесно да го пускаме в/у различни операционни системи.

Статично типизиран, ОО

  1. В Java пишем с много класове.

  2. В Java всичко трябва да живее в някакъв клас.

  3. В Java всяка променлива трябва да има указан тип.

  4. В Java полиморфизмът е много много важен.

Boilerplate

# Hello World in Python
print("Hello World")
package com.hackbulgaria.qa.week1;

public class CodeSamples {
	public static void main(String[] args) {
		System.out.println("Hello World!");
	}
}

public static void main кво?

  1. Това е така нареченият "main method".

  2. Още известен като "мейна" или "майна" метод.

  3. Входната точка към нашата Java програма. От тук започва цялото изпълнение

  4. Ако нямате main method, не може да пуснете вашата програма.

Основна структура в Eclipse

  1. Create new Java Project

  2. Create new package (com.hackbulgaria.qa.week1)

  3. Create new class inside that package

packages

  1. Физически разделя и групира класове.

  2. Класове, които се отнасят за нещо конкретно и работят заедно, обикновено се намират в 1 package

  3. Може да имаме 2 класа с едно и също име, стига да са в различен package.

Синтаксис

int a = 5;
boolean b = true;		

if(b) {
    System.out.println(a);
}

for(int i = 0; i < a; i++) {
    System.out.println(i);
}

Синтаксис

  1. Повече statements

  2. Къдрави скоби

  3. Точка и запетая след всеки statement

Синтаксис - масиви

// Literal creation
int arr[] = {1, 2, 3, 4, 5};

// Arrays have fixed size
int brr[] = new int[5];

for(int i = 0; brr.length; i++) {
    // Will print 0s
    System.out.println(brr[i]);
}

Намерете 8те разлики?

int hm = 5;
Integer hmm = new Integer(5);

System.out.println(hm == hmm);

Примитивни и Референтни типове

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

  1. Пишат се с малка буква

  2. Имат default стойност, ако не им дадем.

  3. Заемат точно определен размер в паметта.

Референтни типове

  1. Пишат се с големи букви.

  2. Имат default стойност null, ако не ги инициализираме

  3. Източник на NullPointerExceptions

  4. Виртуалната машина се грижи за тях. Пазят се в специална памет.

Видимост на променливите - до най-близките къдрави скоби.

OOP

  • Класове и обекти

  • Атрибути и методи

  • public и private неща

  • this

Кучета!

Зеленчуци!

Въглехидрати!

Ние класифицираме разни неща всеки ден.

КЛАСИФИКАЦИЯ

КЛАС-ИФИКАЦИЯ

Езиците за програмиране ни дават различни способи за решаване на даден проблем.

Нива на абстракция:

  1. Типове / Променливи

  2. Списъци / масиви

  3. Условни конструкции / цикли

  4. Функции

  5. ???

В OOP езиците имаме още едно ниво на абстракция - обект.

Един обект има

  1. Има състояние (state)

  2. Има харатреристики (атрибути)

  3. Има държание (методи)

  4. Има тип (class)

  5. Може да бъде различен от другите обекти (identity, reference)

Примери за Обекти

Person ivo = new Person("Ivalo");
Scanner input = new Scanner(System.in);
ArrayList<Integer> numbers = new ArrayList<Integer>

Как работи една кола?

Как се кара една кола?

Hidden Implementation

  • private част - как работи конкретното нещо

  • public част - как използваме конкретното нещо. Още известно като интерфейс.

Ние създаваме системи.

Ние тестваме системи.

Класове и Обекти

  1. Чрез класовете, описваме как изглежда нашата система (това, което моделираме)

  2. В един клас може да имаме public и private неща.

  3. Класът се възприема като шаблон за обекти.

  4. Обектите се създават от класа.

  5. От един клас може да създадем много обекти.

  6. Класът определя поведението на тези обекти.

Класове

class Course {
    public String name;
    public Teacher teacher;
    public ArrayList<Students> students;
}

Класовете имат атрибути

class Course {
    public String name;
    public Teacher teacher;
    public ArrayList<Students> students;
}

Класовете имат методи

class Course {
    public String name;
    public Teacher teacher;
    public ArrayList<Students> students;

    public int attendance() {
        return students.size();
    } 
}

Обеки правим от Класове

Teacher alex = new Teacher("Alex Todorov");

Course qaAndAutomation = new Course();

qaAndAutomation.name = "QA And Automation";
qaAndAutomation.teacher = alex;
qaAndAutomation.students.add(new Student("Rado"));

Един Обект

  1. Има състояние (state)

  2. Има харатреристики (атрибути)

  3. Има поведение (методи)

  4. Има тип (class)

  5. Може да бъде различен от другите обекти (identity, reference)

Един обект

  1. Се създава с new от даден клас.

  2. Нарича се още инстанция на този клас.

  3. И чрез него може да използваме атрибути и методи

Обобщение

  1. Класовете са шаблон - в тях описваме как се държат нашите обекти.

  2. Обектите се създават от даден клас (инстанция на клас)

  3. Чрез обектите може да достъпваме атрибутите и методите на класа

  4. Животът е хубав.

Ние създаваме системи.

Ние тестваме системи.

Обикновено тестваме публичната част на една система.

Публичната част се дефинира чрез "интерфейси"

Интерфейса дефинира какво очакваме от даден клас / система.

Имплементацията "не ни интересува"

Интерфейси в Java

public interface Course {
    public String getName();
    public Teacher getTeacher();
    public ArrayList<Students> getStudents();
    public int attendance();
}
public class CourseImpl implements Course {
    private String courseName = "";
    private Teacher teacher;
    private ArrayList<Student> students = new ArrayList<Student>();

    public CourseImpl(String courseName, Teacher teacher) {
        this.courseName = courseName;
        this.teacher = teacher;
    }

    public int attendance() {
        return students.size();
    }

    public String getName() {
        return courseName;
    }

    public ArrayList<Student> getStudents() {
        return students;
    }

}

Повече за интерфейсите следващия път.

QA And Automation - Intro to Java

By Hack Bulgaria

QA And Automation - Intro to Java

  • 1,782