Atenção: esse artigo tem uma palestra complementar. Clique e assista!

Artigo no estilo: Curso

Do que trata o artigo

Nesta primeira parte você vai aprender como criar um agendador de tarefas utilizando a programação orientada a objetos. Nos próximos artigos desta série serão utilizados padrões de projetos para melhorar o agendador criado neste artigo.


Para que serve

Este artigo mostra os primeiros passos necessários para entender a orientação a objetos. Ao final do artigo você estará apto a classes e manipular os objetos provenientes delas.


Em que situação o tema é útil

Programas orientados a objetos já saem ganhando em relação ao programas com código estruturado, pois quando bem utilizada, esta técnica diminui a quantidade de erros do programa e permite que um sistema possa ser alterado com maior facilidade.

Resumo do DevMan

Nesta série de artigos você vai aprender como utilizar a programação orientada a objetos e entender e aplicar as vantagens dos padrões de projetos. O objetivo desta série é fazer com que você não se limite em apenas conhecer as técnicas existentes – como, por exemplo, herança, polimorfismo etc. – mas que você conheça as vantagens e desvantagens de cada uma, para que possa decidir qual delas terá um melhor resultado para solucionar os diferentes tipos de problemas que aparecem no dia-a-dia.

Nesta série você vai aprender pelo menos uma alternativa de solução para problemas como: criar um sistema que possa trocar o banco de dados utilizado sem muito esforço, fazer com que um formulário atualize as informações exibidas na hora em que elas forem alteradas ao invés de colocar um TTimer para ficar verificando se algo mudou ou não. Você vai aprender todos estes conceitos criando um agendador de tarefas parecido com o agendador do Windows. A lógica é simples: o usuário cria uma tarefa, que será agendada para executar uma ou mais vezes. Neste artigo, que é a primeira parte de uma série, vou apresentar os conceitos mais básicos da orientação a objetos. Não será usado nenhum padrão de projeto nesta primeira parte por dois motivos: por uma questão didática, pois é mais fácil entender padrões de projetos quando você os aplica. E para que os programadores menos experientes com a orientação a objetos adquiriam conhecimento suficientes para entender o restante da série, onde tratarei de designs mais complexos e soluções para simplificá-los. Ao final deste artigo estará pronta a primeira versão do agendador, com um código pouco flexível. É claro que até a versão final o agendador sofrerá muitas mudanças internas comparada com a que será construída aqui. Com esta primeira versão você vai aprender a criar classes e manipular objetos, porém ainda não serão abordadas as técnicas para criar um sistema realmente simples de modificar.

Apresentação da aplicação

Para exemplificar os conceitos da orientação a objetos, vou criar uma aplicação com o objetivo de agendar tarefas para execução. Esta aplicação será parecida com o agendador de tarefas existente no Windows. Primeiro o usuário escolhe algo para ser executado – esta é a tarefa a ser realizada – e depois o usuário escolhe os horários para a execução da tarefa. Em outras palavras, o agendador deve executar um determinado programa em horários pré-programados.

Cada tarefa pode ser agendada para execução uma ou mais vezes, ou seja, é possível agendar a mesma tarefa para executar uma vez no dia 5 e outra no dia 10 de determinado mês. Não deve haver limites para a quantidade de agendamentos de uma tarefa. Se você olhar nas propriedades de alguma tarefa no agendador do Windows, você verá que ele possui tipos diferentes de agendamentos, como: agendamento único, agendamento mensal, agendamento diário, agendamento semanal, entre outros. O agendador que será construído também deve ter tipos diferentes de agendamentos. Para começar vamos criar apenas dois tipos: agendamento único e agendamento diário.

O primeiro passo é identificar quais são os objetos no problema, e cá entre nós: esta é a parte mais fácil. O problema é: deve ser possível agendar a execução de um programa para um ou mais horários. Desta simples frase é possível tirar os dois primeiros objetos da aplicação, são eles: TTarefa e TAgendamento. Veja diagrama da primeira versão destas classes na Figura 1.

Figura 1. A primeria versão das classes de tarefa e agendamento

Nota: Se você tem um pouco de intimidade com os objetos, deve ter estranhado estas duas classes. Talvez esteja se perguntando onde foram parar as associações, heranças, encapsulamento e demais técnicas que são tão importantes. Fique tranquilo: as coisas ainda vão mudar muito até a última versão desta aplicação. Todas estas técnicas serão usadas e outras coisas, além de simples atributos, também serão encapsuladas.
...

Quer ler esse conteúdo completo? Tenha acesso completo