Problema em defenir classes

11 respostas
E

Olá pessoal. Tou com duvidas na criação de classes de um trabalho:

A finalidade do presente trabalho é desenvolver um sistema de gestão de uma escola de condução. A aplicação
deve gerir: alunos, funcionários (administrativos e instrutores) e veículos disponíveis na escola. A
escola de condução disponibiliza 3 tipos de cartas de condução: ligeiros, pesado e mota. Cada tipo de
carta tem um preço diferente.
A aplicação a desenvolver deverá incluir os seguintes requisitos:
Cada aluno pode ser identificado pelo número atribuído durante a inscrição. Para efectuar a inscrição
o aluno deve fornecer, obrigatoriamente: nome, morada, nº BI, nº fiscal, nº telefone e tipo
de carta de condução a que se inscreve. Sobre cada aluno são também mantidos actualizados o nº
aulas, de código e de condução, já frequentadas.
Cada aluno tem um conjunto de aulas de código, com um número mínimo de 15 e um conjunto de
aulas de condução, com um mínimo de 22, sem as quais não têm acesso ao respectivo exame.
Para cada aula teórica deve ser registado o dia e hora em que foi frequentada. Para cada aula prática,
deve ainda ser registada a matrícula do veículo utilizado.
Os funcionários são identificados pelo seu número de funcionário, mas quando são contratados
têm que fornecer os seguintes dados: nome, morada, nº BI, nº fiscal, nº telefone. Para cada funcionário
é ainda armazenada a função exercida, salário, nº de Segurança Social. Sobre cada instrutor
é necessário guardar informação sobre o curso de instrutor que frequentou.

Eu tenho duvidas se crio uma classe pessoa, com subclasses aluno, funcionários e instrutores?

eu não queria definir as classes mal e estar a repetir todo um conjunto de código…

Ajudem-me;)

11 Respostas

P

Ola,

Voce eh de Portugal?

[]'s

E

sim;) qual o problema?

marcelo.bellissimo

Bem, nessas 3 classes existe algum atributo ou método que será de comum uso para todas ? (eu vejo, e você?)
Se sim, crie uma classe abstrata Pessoa e crie as outras 3 extendendo desta classe Pessoa. Eis o famoso “polimorfismo”…

E

eu vejo sim… mas não vejo interesse em ter a classe pessoa… Entendo que aluno e funcionários são distintos… Um aluno é temporário enquanto um funcionário em principio é para estar lá sempre…

P

Curiosidade. Percebi pelo seu sotaque. A proposito, lindo pais. Espero passar por la novamente.

[ ]'s

marcelo.bellissimo

Ah sim, mas veja o seguinte:
Aluno, tem um nome, sobrenome, data de nascimento, etc etc…
Funcionario tambem tem nome, sopbrenome, data de nascimento…

Talvez compense sim criar uma classe Pessoa pra guardar esses valores… claro, tudo depende da sua visão do negócio, não é “obrigatório” fazer isso, mas é uma boa prática em alguns casos…

Seguindo o exemplo que eu citei acima, a classe Aluno teria apenas dados como: curso, numero de matricula, etc etc…
E o Funcionario teria: profissao, salario, numero da carteira de trabalho, ou seja, coisas relativas apenas ao funcionario!

Eu faria essa classe, ficaria mais organizado, do meu ponto de vista… agora quem decide se vai criar ou não, é você…

M

Um aluno é uma pessoa. Um funcionário é uma pessoa. Um instrutor é uma pessoa e um funcionário.

Pensando nisso, por que não ter essa hierarquia de classes?

Sim, mas compartilham atributos próprios de qualquer pessoa.

Veja, um aluno estuda na escola temporariamente. Em geral, um funcionário passa mais tempo que um aluno na instituição.

Isso não quer dizer que seja interessante “sumir” com os dados de um aluno depois que ele se forma.

Pelo contrário: é importante manter um histórico de todos os alunos (assim como de todos os funcionários) que já passaram pela instituição.

E como saber se a pessoa ainda está ligada à escola? No caso do aluno, é possível saber pela matrícula efetuada (isso permite saber se está cursando algo atualmente). No caso do funcionário, deve haver algum marcador para indicar isso.

De qualquer forma, esta é uma outra característica que pertence tanto a alunos quanto a funcionários: determinar se está ou não ligado à escola.

E

Olá pessoal obrigado pelo esclarecimento. Acho que vou fazer através de uma hierarquia de classes, acho que será a forma mais correcta de o fazer pois além de ficar tudo mais organizado também me facilita na escrita de código. Mas contudo se houver mais sugestões e disserem como vocês fariam eu estou disposto a trocar mais umas ideias;)

A

Só para complicar um pouco mais a situação:

Uma pessoa pode ser ao mesmo tempo funcionário e aluno em uma escola (experiência real).

Talvez seja mais interessante modelar a classe Pessoa e os papéis que ela pode assumir ( Funcionário, Aluno, etc)

Acho que isso cai naquela velha discussão de Pessoa Física, Pessoa Jurídica e Cliente.
(Tem uns boms tópicos neste fórum sobre esta dúvida).

adriano_si

AbelBueno:
Só para complicar um pouco mais a situação:

Uma pessoa pode ser ao mesmo tempo funcionário e aluno em uma escola (experiência real).

Talvez seja mais interessante modelar a classe Pessoa e os papéis que ela pode assumir ( Funcionário, Aluno, etc)

Acho que isso cai naquela velha discussão de Pessoa Física, Pessoa Jurídica e Cliente.
(Tem uns boms tópicos neste fórum sobre esta dúvida).

Ainda assim eu faria dentro da Hierarquia de classes…

Mesmo podendo ser um aluno e também um funcionário, para a instituição são 2 pessoas diferentes… uma é o aluno que possui Matrícula, notas, paga o colégio (faculdade), outra é o funcionário, que bate ponto, recebe, falta trabalho, etc… talvez em algum relatório seria interessante pegar essa informação, mas mudar toda uma hierarquia de herança só por causa disso… Não sei…

Abs [] e bons estudos…

M

adriano_si:
Ainda assim eu faria dentro da Hierarquia de classes…

Mesmo podendo ser um aluno e também um funcionário, para a instituição são 2 pessoas diferentes…


Eu também manteria a hierarquia, mas não vejo como pessoas diferentes. Continua sendo a mesmo pessoa, porém com duas especificações diferentes: aluno e funcionário.

Criado 11 de dezembro de 2010
Ultima resposta 14 de dez. de 2010
Respostas 11
Participantes 6