mirror of https://github.com/01-edu/public.git
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
44 lines
1.3 KiB
44 lines
1.3 KiB
2 years ago
|
# University
|
||
|
|
||
|
### Instructions
|
||
|
|
||
|
Create a class named `University`.
|
||
|
|
||
|
Its attributes:
|
||
|
|
||
|
- name - `private string`
|
||
|
- city - `private string`
|
||
|
- ranking - `private int?`
|
||
|
- getters:
|
||
|
- name
|
||
|
- city
|
||
|
- ranking
|
||
|
- Constructor:
|
||
|
- name - `required`
|
||
|
- city - `required`
|
||
|
- ranking - `optional`
|
||
|
|
||
|
### Encapsulation
|
||
|
|
||
|
Sometimes we need to limit access to class attributes so that it can be accessed only from the class itself. This concept is called **Encapsulation.**
|
||
|
|
||
|
In Dart we can make attributes **private** (meaning that they can be changed or used only in the instances of this class) by putting underscore (\_) in the beginning of fields' or methods' name.
|
||
|
|
||
|
Bear in mind that in Dart there is no Encapsulation on a class level. According to Dart's documentation:
|
||
|
|
||
|
- Importing libraries can help you create a modular and shareable code base. Libraries not only provide APIs, but are unit of privacy: private variables, i.e. starting with an underscore (\_) are visible only inside the library. Every Dart app is a library, even if it doesn’t use a library directive.
|
||
|
|
||
|
Still, even on a class level it is a good practice to declare private values and not to use values that are intended to be private.
|
||
|
|
||
|
```dart
|
||
|
|
||
|
class Person {
|
||
|
bool _hunger = true;
|
||
|
|
||
|
void feed() {
|
||
|
this._hunger = false;
|
||
|
}
|
||
|
|
||
|
}
|
||
|
```
|