Задать вопрос
anton_reut
@anton_reut
Начинающий веб-разработчик

Набросал структуру классов учебного сайта доски объявлений, как еще лучше распределить функционал?

В общем посидел над своим процедурным кодом и накидал пока что Классы и Функции к ним (без данных). Смотрю Елисеева, читаю Зандстру и "Объектно-ориентированное мышление" Вайсфилда.

Это только примерная принципиальная схема, каркас.
В данный момент получилось вот так:
(некоторые функции будут принимать другие объекты, да, "матрешка в матрешке")
// --------------- ВСЁ ЧТО КАСАЕТСЯ ПОЛЬЗОВАТЕЛЕЙ: -------------------

class User {
	public function getName(){
		// Отобразить имя
	}
	public function getPhone(){
		// Отобразить телефон
	}
}

class UserPersonalPage {
	// Личный кабинет. 
	public function displayMyAdverts(){
		// Показать мои объявления. 
		// Вызвать Объект MyAdverts, передать ему мой id для вывода моих объявлений
	}
	public function displayMyFavorites(){
		// Показать мои избранные. 
		// Вызвать Объект MyFavorites, передать ему мой id для вывода моих избранных объявлений
	}
	public function displayMyPersonalInfo(){
		// Показать мою персональную информацию - Имя, email, телефон
	}
	public function changeMyPersonalInfo(){
		// Изменить мою персональную информацию - Имя, email, телефон
		// Вызвать Объект UserService, передать ему мой id, вызвать метод изменения нужной информации
	}
}

 // --------------- ВСЁ ЧТО КАСАЕТСЯ ОБРАБОТКИ ПОЛЬЗОВАТЕЛЕЙ: -------------------

class UserService {
	
	public function addUser(){
		// Регистрация пользователя
	}
	public function deleteUser(){
		// Удаление пользователя
	}
	public function activateUser(){
		// Активация пользователя
	}
	public function changeUserPassword() {
		// Сменить пароль пользователю
	}
	public function changeUserName() {
		// Сменить имя пользователю
	}
	public function changeUserEmail() {
		// Сменить email пользователю
	}
	public function changeUserPhone() {
		// Сменить телефон пользователю
	}
}

class UserLoginLogoutService {
	// Вход и выход пользователей
	public function userLogin(){
		// Вход
	}
	public function userLogout(){
		// Выход
	}
}

 // --------------- ВСЁ ЧТО КАСАЕТСЯ ОБЪЯВЛЕНИЙ: -------------------

class AdvertCollection {
	// Список объявлений
	public function displayRecentAdverts(){
		// Показать последние добавленные объявления
	}
	public function displayPromotedAdverts(){
		// Показать объявления выведенные в топ платно
	}
}

class Advert {
	// Объявление детально
	public function displayAdvert(){
		// Показать объявление детально
	}
}

class AdvertFavorites {
	// Избранные объявления
	public function addAdvertToFavorites(){
		// Добавить объявление в мои избранные
	}
	public function displayFavorites(){
		// Показать мои избранные
	}
}

class MyAdverts {
	// Мои объявления
	public function displayMyAdverts(){
		// Показать все мои объявления
	}
}

Как еще, более грамотно, можно всё это распределить? Как бы вы сделали?
  • Вопрос задан
  • 865 просмотров
Подписаться 8 18 комментариев
Подписчики вопроса 8 К ответам на вопрос (2)