O Desafio
O desafio na criação desse projeto começa em compreender como funciona o paradigma da orientação a objeto, que séria nada mais de que programação de software baseado na abstração digital do mundo real, através da composição e interação entre diversas unidades chamadas de 'objetos' e as classes (representando objetos reais contendo identidade, propriedades e, métodos); baseado em quatro principais componentes da programação: abstração digital, encapsulamento, herança e, polimorfismo.
Além disso, também temos a parte de codificação que foi um desafio, por em prática o conhecimento de orientação a objeto separando cada parte do sistema em classes diferentes, assim como suas heranças, encapsulamentos e seus polimorfismo, para poder seguir a boa pratica na programação orientada a objeto
Estruturando o Código
Para a estruturação do código separamos o sistema em 3 objetos, notícias, clientes e gerador de mensagens, os clientes possuem alguns atributos, como: id, o seu débito, e a lista de assuntos selecionados, além também das funções para auxílio, como, por exemplo, inserir e remover assuntos e receber as notícias. O gerador de mensagens é um pouco diferente, ele só possui funções, sendo cada uma delas funções para retornar uma das notícias diárias.
Já para a parte de notícias, ela possui o padrão de projeto Decorator, onde cada classe Decorator específica está relacionada a um dos possíveis assuntos. Seu objeto principal possui somente as declarações dos métodos, já que é usado o padrão Decorator, já a classe Decorator possui a funcionalidade genérica de cada função, já para os objetos para cada tipo de notícia, ele possui as funções, especificas, e no arquivo Principal, utilizamos somente uma variável para criar a notícia para também seguirmos o padrão Decorator.