ВУЗ: Не указан
Категория: Не указан
Дисциплина: Не указана
Добавлен: 11.01.2024
Просмотров: 71
Скачиваний: 1
ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.
Министерство образования и науки Российской ФедерацииФедеральное государственное бюджетное образовательное учреждениевысшего образованияИРКУТСКИЙ НАЦИОНАЛЬНЫЙ ИССЛЕДОВАТЕЛЬСКИЙТЕХНИЧЕСКИЙ УНИВЕРСИТЕТ
ОТЧЁТ К лабораторной работе №2 по дисциплине:
Иркутск 2023 г. Задание
В данном коде класс Subject определяет интерфейс для наблюдаемого объекта, а класс Observer определяет интерфейс наблюдателя. Класс User является наблюдаемым объектом, а класс Follower наблюдателем. User реализует методы наблюдательного объекта removeObserver(Observer), registerObserver(Observer), addPost(Post) и notifyObserver(Post). Follower же реализует метод update(Post). Класс Post необходим для содержания количества лайков пользователей.Рисунок 1 – UML диаграммаРезультат работы программыРисунок 2 – Результат работы программыЛистинг программыinterface Subject {fun registerObserver(observer: Observer)fun removeObserver(observer: Observer)fun notifyObservers(post: Post)} interface Observer {fun update(post: Post)} class User(val userName: String) : Subject {private val followers = mutableListOf()
private val posts = mutableListOf
()
override fun registerObserver(observer: Observer) {
followers.add(observer)
}
override fun removeObserver(observer: Observer) {
followers.remove(observer)
}
override fun notifyObservers(post: Post) {
followers.forEach { it.update(post) }
}
fun addPost(post: Post) {
posts.add(post)
notifyObservers(post)
}
}
class Follower(private val followerName: String) : Observer {
override fun update(post: Post) {
println("$followerName: ${post.author} выложил новый пост: '${post.text}'. лайков: ${post.likes}")
}
}
class Post(val author: String, val text: String, val likes: Int) {
}
fun main() {
val user1 = User("Дима")
val user2 = User("Данил")
val user3 = User("Женя")
val user4 = User("Никита")
val follower1 = Follower("Дима")
val follower2 = Follower("Данил")
val follower3 = Follower("Женя")
val follower4 = Follower("Никита")
user1.registerObserver(follower2)
user1.registerObserver(follower3)
user2.registerObserver(follower1)
user2.registerObserver(follower2)
user2.registerObserver(follower3)
user3.registerObserver(follower4)
user4.registerObserver(follower2)
user4.registerObserver(follower3)
println("Информация о постах пользователей: \n")
println("--------------------------------------------------------------------------------")
val user1Post1 = Post(user1.userName, "Первый пост от Димы", 5)
user1.addPost(user1Post1)
println("--------------------------------------------------------------------------------")
val user1Post2 = Post(user1.userName, "Второй пост от Димы", 7)
user1.addPost(user1Post2)
println("--------------------------------------------------------------------------------")
val user2Post1 = Post(user2.userName, "Первый пост от Данила",6)
user2.addPost(user2Post1)
println("--------------------------------------------------------------------------------")
val user3Post1 = Post(user3.userName, "Первый пост от Жени", 3)
user3.addPost(user3Post1)
println("--------------------------------------------------------------------------------")
val user4Post1 = Post(user4.userName, "Первый пост от Никиты", 13)
user4.addPost(user4Post1)
println("--------------------------------------------------------------------------------")
}
Заключение
В ходе данной лабораторной работе мы изучили основы разработки на языке Kotlin с использованием паттернов проектирования. Был реализован паттерн «Наблюдатель».
| Институт информационных технологий и анализа данных |
| наименование института |
| Разработка мобильных приложений |
| Выполнил студент группы: | | | | | |
| | шифр группы | | подпись | | Фамилия И.О. |
| Проверил: | | | | | |
| | должность | | подпись | | Фамилия И.О. |
-
Cоциальная сеть
В данном коде класс Subject определяет интерфейс для наблюдаемого объекта, а класс Observer определяет интерфейс наблюдателя. Класс User является наблюдаемым объектом, а класс Follower наблюдателем. User реализует методы наблюдательного объекта removeObserver(Observer), registerObserver(Observer), addPost(Post) и notifyObserver(Post). Follower же реализует метод update(Post). Класс Post необходим для содержания количества лайков пользователей.Рисунок 1 – UML диаграммаРезультат работы программыРисунок 2 – Результат работы программыЛистинг программыinterface Subject {fun registerObserver(observer: Observer)fun removeObserver(observer: Observer)fun notifyObservers(post: Post)} interface Observer {fun update(post: Post)} class User(val userName: String) : Subject {private val followers = mutableListOf
private val posts = mutableListOf
()
override fun registerObserver(observer: Observer) {
followers.add(observer)
}
override fun removeObserver(observer: Observer) {
followers.remove(observer)
}
override fun notifyObservers(post: Post) {
followers.forEach { it.update(post) }
}
fun addPost(post: Post) {
posts.add(post)
notifyObservers(post)
}
}
class Follower(private val followerName: String) : Observer {
override fun update(post: Post) {
println("$followerName: ${post.author} выложил новый пост: '${post.text}'. лайков: ${post.likes}")
}
}
class Post(val author: String, val text: String, val likes: Int) {
}
fun main() {
val user1 = User("Дима")
val user2 = User("Данил")
val user3 = User("Женя")
val user4 = User("Никита")
val follower1 = Follower("Дима")
val follower2 = Follower("Данил")
val follower3 = Follower("Женя")
val follower4 = Follower("Никита")
user1.registerObserver(follower2)
user1.registerObserver(follower3)
user2.registerObserver(follower1)
user2.registerObserver(follower2)
user2.registerObserver(follower3)
user3.registerObserver(follower4)
user4.registerObserver(follower2)
user4.registerObserver(follower3)
println("Информация о постах пользователей: \n")
println("--------------------------------------------------------------------------------")
val user1Post1 = Post(user1.userName, "Первый пост от Димы", 5)
user1.addPost(user1Post1)
println("--------------------------------------------------------------------------------")
val user1Post2 = Post(user1.userName, "Второй пост от Димы", 7)
user1.addPost(user1Post2)
println("--------------------------------------------------------------------------------")
val user2Post1 = Post(user2.userName, "Первый пост от Данила",6)
user2.addPost(user2Post1)
println("--------------------------------------------------------------------------------")
val user3Post1 = Post(user3.userName, "Первый пост от Жени", 3)
user3.addPost(user3Post1)
println("--------------------------------------------------------------------------------")
val user4Post1 = Post(user4.userName, "Первый пост от Никиты", 13)
user4.addPost(user4Post1)
println("--------------------------------------------------------------------------------")
}
Заключение
В ходе данной лабораторной работе мы изучили основы разработки на языке Kotlin с использованием паттернов проектирования. Был реализован паттерн «Наблюдатель».