16 de mai de 2011

Introdução a Programação Orientada a Objetos


Introdução à programação orientada a objetos – parte 1
Aula 2: 15/1/2011

Como ela tem várias imagens, vai ser dividida em 2 posts.

Notações gráficas
  • UML é o fluxograma da OO/
  • UML tem 13 diagramas, mas aqui só veremos 1 deles
  • diagramas especificados pela OMT (Object Management Group)
Modelagem
  • fazer o projeto para que outro execute (exemplo: arquiteto projeta, pedreiro coloca a mão na massa; ou o estilista que desenha a roupa e o costureiro que a produz)
  • pessoas diferentes devem atuar entre modelagem e programação, para evitar que uma mesma pessoa (o analista / programador) corrija os erros apenas na codificação e esqueça o modelo desatualizado.
  • Modo de manutenção: corrigir o modelo primeiro!
  • Documentação também chamada de “artefato”

Manutenção
  • modelo “utópico”: 1 hora: 15 minutos para diagnóstico, 15 minutos para acerto e 30 para atualizar os artefatos
  • entender o que vai ser feito: qual é o alvo / qual é o escopo
  • passos
    • 1: entender o escopo
    • 2; “fatiar” o escopo, extraindo os objetos e as classes das “fatias”. (lembrando: análise, quebrar em pedaços, dividir para conquistar)

Exemplo 1:
  • dada uma lista de funcionários de uma empresa com nome, quantidade de horas trabalhadas e valor a ser pago por hora, emitira folha de pagamento
  • o relatório deve conter o nome, quantidade de horas trabalhadas e salário de cada funcionário.

E → P → S

lista (nomes, horas trabalhadas, valor por hora) → processamento → folha de pagamento (nome, horas trabalhadas, salário [campo processado])

a) fazer um fluxo de eventos (também conhecido como é “passo a passo”)

b) descobrir como é feito o cálculo e como é guardada a folha:

    1. o sistema recupera nome e hora trabalhada do funcionário da empresa;
    2. o sistema recupera o valor do cargo do funcionário;
    3. o sistema calcula o salário do funcionário; salário = horas trabalhadas X valor hora do cargo;
    4. o sistema emite nome, hora trabalha e salário do funcionário na folha de pagamento
até este ponto não entrou a técnica Orientada a Objetos ou Estruturada;

c)observar os eventos: ler cada linha do que está escrito e extrair a ação, ou seja, os métodos, as classes (alguém) e os dados (atributos). Ler a frase em busca do verbo.
  1. O sistema recupera o nome e horas trabalhadas do funcionário da empresa.

    Recupera: verbo transitivo. Ação: manipula atributos que pertencem a alguém.
    nome e horas trabalhadas: dados recuperados
    funcionário, empresa: alguém (entidades)

    Nessa frase não há atributos ou métodos para a empresa; logo ela não é classe:

  2. O sistema recupera o valor do cargo do funcionário
    recupera: verbo
    valor: dado recuperado, valor hora;
    cargo do funcionário: recupera de alguém; este alguém é a classe, que é o cargo:

  1. O sistema calcula o salário do funcionário
    calcula: verbo
    salário: dado processado
    funcionário: alguém 

     




  2. O sistema emite nome, horas trabalhadas e salário do funcionário na folha de pagamento.
    Emite: verbo
    nome, horas trabalhadas, salário: dados. Mas eles são do funcionário!
    Folha de pagamento: nova entidade (“alguém”)


    A classe FolhaDePagamento é uma classe abstrata, ou seja, aquela que só tem métodos. Usa os atributos de outras classes e tem apenas métodos que as outras devem usar *

Observação:
os métodos também são chamados de “serviços”. Quando alguém presta um serviço está executando um método.

Exemplo 2:

  • O leitor um livro.

Na frase o verbo é “lê”. Mas pertence a que entidade? Ao livro ou ao leitor?
Ao livro, pois o livro presta o serviço ao leitor. E o livro é necessário. Quem lê lê o quê?

E quanto aos atributos? Como não foram indicados no enunciado, estão implícitos.

Exemplo 3:

  • O gerente cadastra o cliente.

Verbo: cadastra
Quem: gerente, cliente

O cliente é necessário, logo ele é a classe que recebe o método “cadastrar”. Quem cadastra cadastra o quê? Um cliente.
Os desenhos das classes foram usando o Astah UML. A versão “community” é gratuita.

  • Notação gráfica para a classe


    - atributo: tipo
    + método(): tipo de retorno

visibilidade:
  • + público
  • # protegido
  • - privado
privado na classe mãe: filho herda, mas não pode ver.

* Obs: marquei o texto como "tachado" porque vi que classe abstrata é outra coisa. Devo ter anotado errado na aula.

Nenhum comentário: