Skip to content · ⁨Перейти к содержанию⁩

Class Creation · ⁨Создание классов⁩

AP Computer Science A · ⁨AP Информатика A⁩ · Topic 3 · ⁨Тема 3⁩

Video lesson for this topic · ⁨Видеоурок по этой теме⁩ Open the video page · ⁨Открыть страницу видео⁩
7:26

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

Вот студент, хранящийся как три отдельных переменных: имя, курс и оценка. Это работает. Теперь добавьте тысячу студентов. Вам понадобятся три тысячи переменных…

English narration · English + 中文 subtitles burned in · ⁨Английское озвучивание · Английский + китайские субтитры (встроенные)⁩

3.1

Abstraction and Program Design · ⁨Абстракция и проектирование программ⁩

Syllabus · ⁨Программа⁩
English

Learning Objective 3.1.A: Represent the design of a program by using natural language or creating diagrams that indicate the classes in the program and the data and procedural abstractions found in each class by including all attributes and behaviors.

  • 3.1.A.1 Abstraction is the process of reducing complexity by focusing on the main idea. By hiding details irrelevant to the question at hand and bringing together related and useful details, abstraction reduces complexity and allows one to focus on the idea.
  • 3.1.A.2 Data abstraction provides a separation between the abstract properties of a data type and the concrete details of its representation. Data abstraction manages complexity by giving data a name without referencing the specific details of the representation. Data can take the form of a single variable or a collection of data, such as in a class or a set of data.
  • 3.1.A.3 An attribute is a type of data abstraction that is defined in a class outside any method or constructor. An instance variable is an attribute whose value is unique to each instance of the class. A class variable is an attribute shared by all instances of the class.
  • 3.1.A.4 Procedural abstraction provides a name for a process and allows a method to be used only knowing what it does, not how it does it. Through method decomposition, a programmer breaks down larger behaviors of the class into smaller behaviors by creating methods to represent each individual smaller behavior. A procedural abstraction may extract shared features to generalize functionality instead of duplicating code. This allows for code reuse, which helps manage complexity.
  • 3.1.A.5 Using parameters allows procedures to be generalized, enabling the procedures to be reused with a range of input values or arguments.
  • 3.1.A.6 Using procedural abstraction in a program allows programmers to change the internals of a method (to make it faster, more efficient, use less storage, etc.) without needing to notify method users of the change as long as the method signature and what the method does is preserved.
  • 3.1.A.7 Prior to implementing a class, it is helpful to take time to design each class including its attributes and behaviors. This design can be represented using natural language or diagrams.
Русский

Цель обучения 3.1.A: Представлять проект программы с помощью естественного языка или диаграмм, указывающих классы в программе и данные и процедурные абстракции, найденные в каждом классе, включая все атрибуты и поведения.

  • 3.1.A.1 Абстракция — это процесс снижения сложности путем сосредоточения на основной идее. Скрывая детали, не относящиеся к текущему вопросу, и объединяя связанные и полезные детали, абстракция снижает сложность и позволяет сосредоточиться на идее.
  • 3.1.A.2 Абстракция данных обеспечивает разделение между абстрактными свойствами типа данных и конкретными деталями его представления. Абстракция данных управляет сложностью, предоставляя данным имя без ссылки на конкретные детали представления. Данные могут принимать форму одной переменной или набора данных, например, в классе или наборе данных.
  • 3.1.A.3 Атрибут — это вид абстракции данных, который определяется в классе вне любого метода или конструктора. Переменная экземпляра — это атрибут, значение которого уникально для каждого экземпляра класса. Переменная класса — это атрибут, общий для всех экземпляров класса.
  • 3.1.A.4 Процедурная абстракция предоставляет имя процессу и позволяет использовать метод, зная только то, что он делает, а не как он это делает. Посредством декомпозиции методов программист разбивает крупные поведения класса на более мелкие, создавая методы для представления каждого отдельного мелкого поведения. Процедурная абстракция может извлекать общие черты для обобщения функциональности вместо дублирования кода. Это позволяет использовать код повторно, что помогает управлять сложностью.
  • 3.1.A.5 Использование параметров позволяет обобщать процедуры, позволяя использовать их с различными входными значениями или аргументами.
  • 3.1.A.6 Использование процедурной абстракции в программе позволяет программистам изменять внутреннюю часть метода (например, ускорить его, повысить эффективность, уменьшить потребление памяти и т. д.) без необходимости уведомлять пользователей метода об изменениях, при условии сохранения подписи метода и того, что он делает.
  • 3.1.A.7 Перед реализацией класса полезно уделить время проектированию каждого класса, включая его атрибуты и поведение. Этот проект может быть представлен с помощью естественного языка или диаграмм.

Source: College Board AP Course and Exam Description · ⁨Источник: Описание курса и экзамена College Board AP⁩

English

Abstraction 抽象 means hiding detail behind a simple interface – you use a String without knowing how it stores characters. Good design breaks a problem into classes, each responsible for one idea. This topic is about writing your own classes.

Русский
Сборка пазла в процессе: классы и методы — это модульные части более крупного проекта программы
Сборка пазла в процессе: классы и методы — это модульные части более крупного проекта программы

Абстракция означает сокрытие деталей за простым интерфейсом — вы используете String, не зная, как он хранит символы. Хороший дизайн разбивает задачу на классы, каждый из которых отвечает за одну концепцию. Эта тема посвящена написанию ваших собственных классов.

Декомпозиция программы на модули и подмодули
Декомпозиция программы на модули и подмодули
3.2

The Impact of Program Design · ⁨Влияние проектирования программ⁩

Syllabus · ⁨Программа⁩
English

Learning Objective 3.2.A: Explain the social and ethical implications of computing systems.

  • 3.2.A.1 System reliability refers to the program being able to perform its tasks as expected under stated conditions without failure. Programmers should make an effort to maximize system reliability by testing the program with a variety of conditions.
  • 3.2.A.2 The creation of programs has impacts on society, the economy, and culture. These impacts can be both beneficial and harmful. Programs meant to fill a need or solve a problem can have unintended harmful effects beyond their intended use.
  • 3.2.A.3 Legal issues and intellectual property concerns arise when creating programs. Programmers often reuse code written by others and published as open source and free to use. Incorporation of code that is not published as open source requires the programmer to obtain permission and often purchase the code before integrating it into their program.
Русский

Цель обучения 3.2.A: Объяснять социальные и этические последствия вычислительных систем.

  • 3.2.A.1 Надежность системы означает способность программы выполнять свои задачи ожидаемым образом в stated условиях без сбоев. Программисты должны предпринимать усилия по максимизации надежности системы, тестируя программу с использованием различных условий.
  • 3.2.A.2 Создание программ оказывает влияние на общество, экономику и культуру. Это влияние может быть как положительным, так и отрицательным. Программы, предназначенные для удовлетворения потребностей или решения проблем, могут иметь нежелательные вредные последствия за пределами их прямого назначения.
  • 3.2.A.3 При создании программ возникают правовые вопросы и проблемы, связанные с интеллектуальной собственностью. Программисты часто переиспользуют код, написанный другими и опубликованный в виде открытого исходного кода (open source), доступный бесплатно. Использование кода, который не является открытым исходным кодом, требует получения разрешения у автора и часто покупки лицензии перед интеграцией этого кода в свою программу.

Source: College Board AP Course and Exam Description · ⁨Источник: Описание курса и экзамена College Board AP⁩

English

Design choices affect whether code is correct, readable, and reusable. Encapsulation 封装 – keeping data private and exposing it only through methods – protects an object's state from misuse and lets you change the inside without breaking users of the class. Thoughtful naming, single-purpose methods, and testing reduce bugs.

Design also carries responsibility beyond the code. System reliability 系统可靠性 - a program performing its tasks as expected, without failure - is something programmers should maximise through careful design and testing. Programs have real impacts on society, the economy, and culture that can be both beneficial and harmful. And creating programs raises legal and intellectual-property 知识产权 concerns: programmers often reuse code published as open source 开源 and free to use, but must respect its licence and give credit rather than copy others' work as their own.

Русский

Выборы в дизайне влияют на то, является ли код правильным, читаемым и повторно используемым. Инкапсуляция — сохранение данных в приватном доступе и предоставление к ним доступа только через методы — защищает состояние объекта от неправильного использования и позволяет изменять внутреннюю часть, не нарушая работу пользователей класса. Продуманное именование, методы с одной целью и тестирование снижают количество ошибок.

Дизайн также несет ответственность, выходящую за рамки кода. Надежность системы — способность программы выполнять свои задачи так, как ожидалось, без сбоев, — это то, что программисты должны максимизировать благодаря тщательному дизайну и тестированию. Программы оказывают реальное влияние на общество, экономику и культуру, которое может быть как положительным, так и отрицательным. Создание программ поднимает юридические вопросы и вопросы интеллектуальной собственности: программисты часто используют код, опубликованный как открытый исходный код и свободный для использования, но должны соблюдать его лицензию и указывать авторство, а не копировать чужие работы как свои собственные.

3.3

The Anatomy of a Class · ⁨Анатомия класса⁩

Syllabus · ⁨Программа⁩
English

Learning Objective 3.3.A: Develop code to designate access and visibility constraints to classes, data, constructors, and methods.

  • 3.3.A.1 Data encapsulation is a technique in which the implementation details of a class are kept hidden from external classes. The keywords public and private affect the access of classes, data, constructors, and methods. The keyword private restricts access to the declaring class, while the keyword public allows access from classes outside the declaring class.
  • 3.3.A.2 In this course, classes are always designated public and are declared with the keyword class.
  • 3.3.A.3 In this course, constructors are always designated public.
  • 3.3.A.4 Instance variables belong to the object, and each object has its own copy of the variable.
  • 3.3.A.5 Access to attributes should be kept internal to the class in order to accomplish encapsulation. Therefore, it is good programming practice to designate the instance variables for these attributes as private unless the class specification states otherwise.
  • 3.3.A.6 Access to behaviors can be internal or external to the class. Methods designated as public can be accessed internally or externally to a class, whereas methods designated as private can only be accessed internally to the class.
Русский

Цель обучения 3.3.A: Написать код для определения ограничений доступа и видимости классов, данных, конструкторов и методов.

  • 3.3.A.1 Инкапсуляция данных — это техника, при которой детали реализации класса скрыты от внешних классов. Ключевые слова public и private влияют на уровень доступа к классам, данным, конструкторам и методам. Ключевое слово private ограничивает доступ только объявляющим классом, в то время как ключевое слово public позволяет доступ со стороны классов, находящихся вне объявляющего класса.
  • 3.3.A.2 В данном курсе классы всегда обозначаются как public и объявляются с использованием ключевого слова class.
  • 3.3.A.3 В данном курсе конструкторы всегда обозначаются как public.
  • 3.3.A.4 Экземплярные переменные принадлежат объекту, и каждый объект имеет свою собственную копию такой переменной.
  • 3.3.A.5 Доступ к атрибутам должен быть ограничен внутренним пространством класса для обеспечения инкапсуляции. Поэтому хорошей практикой программирования является обозначение экземплярных переменных для этих атрибутов как private, если иное не указано в спецификации класса.
  • 3.3.A.6 Доступ к поведению (методам) может быть как внутренним, так и внешним относительно класса. Методы, обозначенные как public, могут вызываться как изнутри, так и снаружи класса, тогда как методы, обозначенные как private, доступны только внутри класса.

Source: College Board AP Course and Exam Description · ⁨Источник: Описание курса и экзамена College Board AP⁩

English

A class has three parts: instance variables 实例变量 (fields – the object's data), constructors (build objects), and methods (behavior). Fields are usually private; methods are usually public:

Русский

Класс состоит из трех частей: экземплярных переменных (полей — данных объекта), конструкторов (создания объектов) и методов (поведения). Поля обычно объявляются private; методы обычно объявляются public:

Диаграмма классов: приватные атрибуты и публичные методы
Диаграмма классов: приватные атрибуты и публичные методы
public class Student {
    private String name;      // instance variable
    private int score;

    public Student(String n, int s) {   // constructor
        name = n;
        score = s;
    }
    public int getScore() { return score; }   // accessor
}
Чертеж: класс — это шаблон, определяющий, как создаются объекты этого типа
Чертеж: класс — это шаблон, определяющий, как создаются объекты этого типа
Explore · ⁨Исследовать⁩

See an object's fields as boxes · ⁨Представьте поля объекта как контейнеры⁩

A class groups related data (its fields) and methods. Each object gets its own set of field boxes; assigning to one changes that object only. · ⁨Класс объединяет связанные данные (его поля) и методы. Каждый объект получает собственный набор контейнеров для полей; изменение одного влияет только на этот объект.⁩

Vocabulary · ⁨Словарь⁩ Train · ⁨Тренировать⁩
English Русский
Abstraction/əbˈstrækʃn/ Абстрагирование
Encapsulation/ɪnˌkæpsjʊˈleɪʃn/ Инкапсуляция
System reliability/ˈsɪstəm rɪˌlaɪəˈbɪlɪti/ Надежность системы
legal and intellectual-property/ˈliːɡl ænd ˌɪntəˈlektʃuːəl ˈprɒpəti/ правовые вопросы и интеллектуальная собственность
open source/ˈəʊpən sɔːs/ open source
instance variables/ˈɪnstəns ˈveərɪəblz/ переменные экземпляра
constructor/kənˈstrʌktə/ конструктор
overloading/ˌəʊvəˈləʊdɪŋ/ перегрузкой
accessor (getter)/əkˈsesə/ геттер (accessor)
3.4

Constructors · ⁨Конструкторы⁩

Syllabus · ⁨Программа⁩
English

Learning Objective 3.4.A: Develop code to declare instance variables for the attributes to be initialized in the body of the constructors of a class.

  • 3.4.A.1 An object's state refers to its attributes and their values at a given time and is defined by instance variables belonging to the object. This defines a has-a relationship between the object and its instance variables.
  • 3.4.A.2 A constructor is used to set the initial state of an object, which should include initial values for all instance variables. When a constructor is called, memory is allocated for the object and the associated object reference is returned. Constructor parameters, if specified, provide data to initialize instance variables.
  • 3.4.A.3 When a mutable object is a constructor parameter, the instance variable should be initialized with a copy of the referenced object. In this way, the instance variable does not hold a reference to the original object, and methods are prevented from modifying the state of the original object.
  • 3.4.A.4 When no constructor is written, Java provides a no-parameter constructor, and the instance variables are set to default values according to the data type of the attribute. This constructor is called the default constructor.
  • 3.4.A.5 The default value for an attribute of type int is 0. The default value of an attribute of type double is 0.0. The default value of an attribute of type boolean is false. The default value of a reference type is null.
Русский

Цель обучения 3.4.A: Написать код для объявления экземплярных переменных для атрибутов, которые должны быть инициализированы в теле конструкторов класса.

  • 3.4.A.1 Состояние объекта относится к его атрибутам и их значениям в определенный момент времени и определяется экземплярными переменными, принадлежащими этому объекту. Это определяет отношение «имеет» (has-a) между объектом и его экземплярными переменными.
  • 3.4.A.2 Конструктор используется для установки начального состояния объекта, которое должно включать начальные значения для всех экземплярных переменных. При вызове конструктора выделяется память под объект, и возвращается ссылка на этот объект. Параметры конструктора, если они указаны, передают данные для инициализации экземплярных переменных.
  • 3.4.A.3 Когда изменяемый объект является параметром конструктора, экземплярная переменная должна быть инициализирована копией этого объекта. Таким образом, экземплярная переменная не будет содержать ссылку на оригинальный объект, что предотвращает возможность изменения состояния оригинального объекта через методы.
  • 3.4.A.4 Если конструктор не написан явно, Java предоставляет конструктор без параметров, а экземплярные переменные устанавливаются в значения по умолчанию в соответствии с типом данных атрибута. Этот конструктор называется конструктором по умолчанию.
  • 3.4.A.5 Значение по умолчанию для атрибута типа int равно 0. Значение по умолчанию для атрибута типа double равно 0.0. Значение по умолчанию для атрибута типа boolean равно false. Значение по умолчанию для ссылочного типа равно null.

Source: College Board AP Course and Exam Description · ⁨Источник: Описание курса и экзамена College Board AP⁩

English

A constructor 构造函数 has the same name as the class and no return type. It runs when you write new, and its job is to initialize the fields. A class can have several constructors with different parameter lists (overloading 重载); a no-argument constructor sets defaults.

Русский

Конструктор имеет то же имя, что и класс, и не имеет возвращаемого типа. Он вызывается при записи new, и его задача — инициализировать поля. Класс может иметь несколько конструкторов с разными списками параметров (перегрузка); конструктор без параметров устанавливает значения по умолчанию.

3.5

Methods: How to Write Them · ⁨Методы: Как их писать⁩

Syllabus · ⁨Программа⁩
English

Learning Objective 3.5.A: Develop code to define behaviors of an object through methods written in a class using primitive values and determine the result of calling these methods.

  • 3.5.A.1 A void method does not return a value. Its header contains the keyword void before the method name.
  • 3.5.A.2 A non-void method returns a single value. Its header includes the return type in place of the keyword void.
  • 3.5.A.3 In non-void methods, a return expression compatible with the return type is evaluated, and the value is returned. This is referred to as return by value.
  • 3.5.A.4 The return keyword is used to return the flow of control to the point where the method or constructor was called. Any code that is sequentially after a return statement will never be executed. Executing a return statement inside a selection or iteration statement will halt the statement and exit the method or constructor.
  • 3.5.A.5 An accessor method allows objects of other classes to obtain a copy of the value of instance variables or class variables. An accessor method is a non-void method.
  • 3.5.A.6 A mutator (modifier) method is a method that changes the values of the instance variables or class variables. A mutator method is often a void method.
  • 3.5.A.7 Methods with parameters receive values through those parameters and use those values in accomplishing the method's task.
  • 3.5.A.8 When an argument is a primitive value, the parameter is initialized with a copy of that value. Changes to the parameter have no effect on the corresponding argument.
Русский

Цель обучения 3.5.A: Написать код для определения поведения объекта через методы, написанные в классе, используя примитивные значения, и определить результат вызова этих методов.

  • 3.5.A.1 Метод void не возвращает значение. В его заголовке перед именем метода содержится ключевое слово void.
  • 3.5.A.2 Непустой метод (возвращающий значение) возвращает одно значение. В его заголовке вместо ключевого слова void указывается тип возвращаемого значения.
  • 3.5.A.3 В непустых методах вычисляется выражение возврата, совместимое с типом возвращаемого значения, и оно возвращается. Это называется возвратом по значению.
  • 3.5.A.4 Ключевое слово return используется для возврата потока управления в точку, где был вызван метод или конструктор. Любой код, следующий последовательно после оператора return, никогда не будет выполнен. Выполнение оператора return внутри условия выбора или цикла остановит выполнение данного блока и завершит работу метода или конструктора.
  • 3.5.A.5 Метод-аксессуар (accessor method) позволяет объектам других классов получать копию значения экземплярных переменных или переменных класса. Метод-аксессуар является непустым методом.
  • 3.5.A.6 Мутатор (mutator method) — это метод, который изменяет значения экземплярных переменных или переменных класса. Мутатор часто является методом без возвращаемого значения (void-методом).
  • 3.5.A.7 Методы с параметрами получают значения через эти параметры и используют их для выполнения задачи метода.
  • 3.5.A.8 Когда аргумент является примитивным значением, параметр инициализируется копией этого значения. Изменения, внесенные в параметр, не оказывают влияния на соответствующий аргумент.

Source: College Board AP Course and Exam Description · ⁨Источник: Описание курса и экзамена College Board AP⁩

English

A method has a signature, a return type, and a body. An accessor (getter) 访问器 returns information without changing the object; a mutator (setter) 修改器 changes a field. A method returning a value must have a return of the right type on every path; a void method returns nothing.

Русский

Метод имеет сигнатуру, тип возвращаемого значения и тело. Аксессор (getter) возвращает информацию, не изменяя объект; мутатор (setter) изменяет поле. Метод, возвращающий значение, должен иметь оператор return правильного типа на каждом пути; метод void ничего не возвращает.

public void setScore(int s) { score = s; }   // mutator
public String toString() { return name + ": " + score; }
Explore · ⁨Исследовать⁩

Follow a method call and its return · ⁨Отследите вызов метода и его возвращение⁩

Calling a method pushes a frame with its parameters; when it hits return, the frame pops and the value goes back to the caller. · ⁨Вызов метода помещает фрейм с его параметрами; когда он достигает return, фрейм удаляется, и значение возвращается вызывающей функции.⁩

Vocabulary · ⁨Словарь⁩ Train · ⁨Тренировать⁩
English Русский
mutator (setter)/mjuːˈteɪtə/ сеттер (mutator)
static (class) variable/ˈstætɪk ˈveərɪəbl/ статическая (классовая) переменная
3.6

Passing and Returning References of an Object · ⁨Передача и возврат ссылок на объект⁩

Syllabus · ⁨Программа⁩
English

Learning Objective 3.6.A: Develop code to define behaviors of an object through methods written in a class using object references and determine the result of calling these methods.

  • 3.6.A.1 When an argument is an object reference, the parameter is initialized with a copy of that reference; it does not create a new independent copy of the object. If the parameter refers to a mutable object, the method or constructor can use this reference to alter the state of the object. It is good programming practice to not modify mutable objects that are passed as parameters unless required in the specification.
  • 3.6.A.2 When the return expression evaluates to an object reference, the reference is returned, not a reference to a new copy of the object.
  • 3.6.A.3 Methods cannot access the private data and methods of a parameter that holds a reference to an object unless the parameter is the same type as the method's enclosing class.
Русский

Цель обучения 3.6.A: Написать код для определения поведения объекта через методы, написанные в классе, используя ссылки на объекты, и определить результат вызова этих методов.

  • 3.6.A.1 Когда аргументом является ссылка на объект, параметр инициализируется копией этой ссылки; при этом не создается новая независимая копия самого объекта. Если параметр ссылается на изменяемый объект, метод или конструктор может использовать эту ссылку для изменения состояния объекта. Хорошей практикой программирования считается не изменять изменяемые объекты, передаваемые в качестве параметров, если это не требуется в спецификации.
  • 3.6.A.2 Когда возвращаемое выражение вычисляется как ссылка на объект, возвращается сама ссылка, а не ссылка на новую копию этого объекта.
  • 3.6.A.3 Методы не могут получить доступ к приватным данным и методам параметра, хранящего ссылку на объект, если только этот параметр не имеет того же типа, что и класс-обладатель данного метода.

Source: College Board AP Course and Exam Description · ⁨Источник: Описание курса и экзамена College Board AP⁩

English
= copies the reference, not the object

When you pass an object to a method, Java copies the reference, so the method acts on the same object – changes to its fields are visible to the caller. (Primitives are copied by value, so changes to them are not.) A method can also return a reference to an object. Because a String is immutable, passing one is safe; passing a mutable object lets a method change it.

Exam skill: know that mutating an object's fields inside a method affects the original, but reassigning the parameter (param = new...) does not affect the caller.

Worked example. Suppose s is a Student with score 50, and we call tweak(s):

Line (1) changes the object s points to, so the caller now sees 100. Line (2) makes the method's own copy of the reference point at a fresh object – the caller's s is untouched – and line (3) affects only that new object. After the call, s.getScore() is 100: the mutation stuck, the reassignment did not.

Русский
= копирует ссылку, а не объект

Когда вы передаете объект методу, Java копирует ссылку, поэтому метод действует с тем же объектом — изменения его полей видны вызывающей стороне. (Примитивы копируются по значению, поэтому изменения в них не видны.) Метод также может возвращать ссылку на объект. Поскольку String неизменяем (immutable), передача его безопасна; передача изменяемого объекта позволяет методу изменить его.

Java передает по значению: метод получает копию; истинная передача по ссылке, которой нет в Java, позволила бы ему переназначить переменную вызывающей стороны
Java всегда передает по значению (слева): метод получает копию ссылки. Истинная передача по ссылке (справа) — которой нет в Java — позволила бы методу переназначить собственную переменную вызывающей стороны.

Экзаменационный навык: знайте, что изменение полей объекта внутри метода влияет на оригинал, но переназначение параметра (param = new...) не влияет на вызывающую сторону.

Разобраный пример. Предположим, что s — это Student со счетом 50, и мы вызываем tweak(s):

public static void tweak(Student a) {
    a.setScore(100);          // (1) mutates the shared object
    a = new Student("Z", 0);  // (2) repoints the local copy only
    a.setScore(5);            // (3) changes only the new local object
}

Строка (1) изменяет объект, на который указывает s, поэтому вызывающий код теперь видит 100. Строка (2) создает собственную копию ссылки метода, направленную на новый объект — при этом s вызывающего кода остается нетронутым, а строка (3) влияет только на этот новый объект. После завершения вызова s.getScore() остается 100: мутация сохранилась, а переназначение не изменило исходную ссылку.

3.7

Class Variables and Class Methods · ⁨Переменные и методы класса⁩

Syllabus · ⁨Программа⁩
English

Learning Objective 3.7.A: Develop code to define behaviors of a class through class methods.

  • 3.7.A.1 Class methods cannot access or change the values of instance variables or call instance methods without being passed an instance of the class via a parameter.
  • 3.7.A.2 Class methods can access or change the values of class variables and can call other class methods.

Learning Objective 3.7.B: Develop code to declare the class variables that belong to the class.

  • 3.7.B.1 Class variables belong to the class, with all objects of a class sharing a single copy of the class variable. Class variables are designated with the static keyword before the variable type.
  • 3.7.B.2 Class variables that are designated public are accessed outside of the class by using the class name and the dot operator, since they are associated with a class, not objects of a class.
  • 3.7.B.3 When a variable is declared final, its value cannot be modified.
Русский

Цель обучения 3.7.A: Написать код для определения поведения класса с помощью классовых методов.

  • 3.7.A.1 Классовые методы не могут получить доступ к значениям экземплярных переменных или вызывать экземплярные методы без передачи экземпляра класса через параметр.
  • 3.7.A.2 Классовые методы могут получать доступ к значениям классовых переменных, изменять их, а также вызывать другие классовые методы.

Цель обучения 3.7.B: Написать код для объявления классовых переменных, принадлежащих классу.

  • 3.7.B.1 Классовые переменные принадлежат классу, и все объекты одного класса разделяют единственную копию такой переменной. Классовые переменные обозначаются ключевым словом static перед типом переменной.
  • 3.7.B.2 Классовые переменные, обозначенные public, вне классаAccessed with the class name and the dot operator, since they are associated with a class, not objects of a class.
  • 3.7.B.3 Когда переменная объявлена со словом final, её значение не может быть изменено.

Source: College Board AP Course and Exam Description · ⁨Источник: Описание курса и экзамена College Board AP⁩

English
static vs instance fields

A static (class) variable 类变量, marked static, is shared by all objects of the class – one copy total (e.g. a counter of how many objects exist). A static method belongs to the class and cannot use instance fields directly. Access them by class name: Student.getCount().

Русский
статические против экземплярных полей

Статическая (классовая) переменная, помеченная static, является общей для всех объектов класса — существует одна копия всего (например, счетчик количества существующих объектов). Статический метод принадлежит классу и не может напрямую использовать экземплярные поля. Обращайтесь к ним по имени класса: Student.getCount().

3.8

Scope and Access · ⁨Область видимости и модификаторы доступа⁩

Syllabus · ⁨Программа⁩
English

Learning Objective 3.8.A: Explain where variables can be used in the code.

  • 3.8.A.1 Local variables are variables declared in the headers or bodies of blocks of code. Local variables can only be accessed in the block in which they are declared. Since constructors and methods are blocks of code, parameters to constructors or methods are also considered local variables. These variables may only be used within the constructor or method and cannot be declared to be public or private.
  • 3.8.A.2 When there is a local variable or parameter with the same name as an instance variable, the variable name will refer to the local variable instead of the instance variable within the body of the constructor or method.
Русский

Цель обучения 3.8.A: Объяснить, где переменные могут использоваться в коде.

  • 3.8.A.1 Локальные переменные — это переменные, объявленные в заголовках или телах блоков кода. Локальные переменные доступны только в том блоке, в котором они объявлены. Поскольку конструкторы и методы являются блоками кода, параметры конструкторов или методов также считаются локальными переменными. Эти переменные могут использоваться только внутри конструктора или метода и не могут быть объявлены как public или private.
  • 3.8.A.2 Когда существует локальная переменная или параметр с тем же именем, что и экземплярная переменная, имя переменной будет ссылаться на локальную переменную, а не на экземплярную переменную внутри тела конструктора или метода.

Source: College Board AP Course and Exam Description · ⁨Источник: Описание курса и экзамена College Board AP⁩

English

Scope 作用域 is where a name is visible. A local variable declared in a method exists only inside it; a parameter exists only in its method; an instance variable is visible throughout the object. Access modifiers control visibility across classes: private (this class only) versus public (anywhere). Local variables shadow fields of the same name – a source of bugs.

Русский

Область видимости — это место, где имя noticeably. Локальная переменная, объявленная внутри метода, существует только внутри него; параметр существует только в своем методе; экземплярная переменная доступна на протяжении всего существования объекта. Модификаторы доступа регулируют видимость между классами: private (только этот класс) против public (везде). Локальные переменные затеняют поля того же имени — это источник ошибок.

Глобальная переменная видна везде; локальная переменная только внутри своего блока
Глобальная переменная видна везде; локальная переменная только внутри своего блока
Vocabulary · ⁨Словарь⁩ Train · ⁨Тренировать⁩
English Русский
Scope/skəʊp/ Область видимости
3.9

The this Keyword · ⁨Ключевое слово this⁩

Syllabus · ⁨Программа⁩
English

Learning Objective 3.9.A: Develop code for expressions that are self-referencing and determine the result of these expressions.

  • 3.9.A.1 Within an instance method or a constructor, the keyword this acts as a special variable that holds a reference to the current object—the object whose method or constructor is being called.
  • 3.9.A.2 The keyword this can be used to pass the current object as an argument in a method call.
  • 3.9.A.3 Class methods do not have a this reference.
Русский

Цель обучения 3.9.A: Написать код для самоссылающихся выражений и определить результат этих выражений.

  • 3.9.A.1 Внутри экземплярного метода или конструктора ключевое слово this действует как специальная переменная, хранящая ссылку на текущий объект — объект, чей метод или конструктор вызывается.
  • 3.9.A.2 Ключевое слово this может использоваться для передачи текущего объекта в качестве аргумента при вызове метода.
  • 3.9.A.3 У классовых методов нет ссылки на this.

Source: College Board AP Course and Exam Description · ⁨Источник: Описание курса и экзамена College Board AP⁩

English

this is a reference to the current object. Use it to tell a field apart from a parameter with the same name, or to call another method of the same object:

Exam skill: when a constructor or setter's parameter has the same name as a field, you must write this.field = param – without this, the assignment does nothing useful.

Русский

this — это ссылка на текущий объект. Используйте его, чтобы отличить поле от параметра с тем же именем или вызвать другой метод того же объекта:

public Student(String name, int score) {
    this.name = name;      // this.name is the field; name is the parameter
    this.score = score;
}

Экзаменационный навык: когда у конструктора или сеттера параметр имеет то же имя, что и поле, вы обязаны писать this.field = param — без this присваивание не будет иметь никакого практического смысла.

3.9

Exam tips · ⁨Советы для экзамена⁩

English
  • Design with methods and classes: encapsulate data as private fields and expose behaviour through public methods.
  • Know the difference between an object and its class, and that objects are passed by value — the parameter gets a copy of the reference, so a method can change the object's state, but reassigning the parameter does not affect the caller (Java has no pass-by-reference).
  • Traverse arrays and ArrayLists safely — size is length vs .size(), and removing during a loop shifts indices.
  • Trace a recursive method to determine its result: find the base case first, then follow each recursive call to its return value (writing recursive code is outside the exam's scope).
  • Recognise inheritance vocabulary — superclass, subclass, method overriding, and that every class is a subclass of Object (designing and implementing inheritance is outside the exam's scope).
Русский
  • Проектирование с использованием методов и классов: инкапсулируйте данные как поля private и открывайте доступ к поведению через публичные методы.
  • Знать разницу между объектом и его классом, а также то, что объекты передаются по значению — параметр получает копию ссылки, поэтому метод может изменить состояние объекта, но переназначение параметра не влияет на вызывающий код (в Java нет передачи по ссылке).
  • Безопасно обходите массивы и ArrayListы — размер равен length против .size(), а удаление во время цикла смещает индексы.
  • Трассировать рекурсивный метод для определения его результата: сначала найдите базовый случай, затем проследите каждое рекурсивное вызов до получения возвращаемого значения (написание рекурсивного кода выходит за рамки экзамена).
  • Распознавать терминологию наследования — суперкласс, подкласс, переопределение метода, а также тот факт, что каждый класс является подклассом Object (проектирование и реализация наследования выходят за рамки экзамена).

Interactive lessons on this topic · ⁨Интерактивные уроки по этой теме⁩

Work through it step by step, with instant-check exercises. · ⁨Пройдите его шаг за шагом с упражнениями мгновенной проверки.⁩

Past Papers · ⁨Архив экзаменационных работ⁩

More topics in AP Computer Science A · ⁨AP Информатика A⁩ · ⁨Больше тем в AP Computer Science A · ⁨AP Информатика A⁩⁩

Log in or create account · ⁨Войти или создать аккаунт⁩

IGCSE, A-Level & AP