A proposta da orientao a Objetos representar o mais fielmente possvel as situaes do mundo real nos sistemas computacionais. Ns entendemos o mundo como um todo composto por vrios objetos que interagem uns com os outros. Da mesma maneira, a Orientao a objetos consiste em considerar os sistemas computacionais no como uma coleo estruturada de processos, mas sim como uma coleo de objetos que interagem entre si. Os programas Orientados a objetos so programas estruturados em mdulos que agrupam um estado e operaes sobre este estado. Apresentam nfase em reutilizao de cdigo. Um dos grandes diferenciais da programao orientada a objetos em relao a outros paradigmas de programao que tambm permitem a definio de estruturas e operaes sobre essas estruturas est no conceito de herana, mecanismo atravs do qual definies existentes podem ser facilmente estendidas. Juntamente com a herana deve ser enfatizada a importncia do polimorfismo, que permite selecionar funcionalidades que um programa ir utilizar de forma dinmica, durante sua execuo.
Classes e Atributos Uma classe representa um conjunto de objetos que possuem caractersticas e comportamentos comuns e de agora em diante, diremos que um objeto uma instncia de uma determinada classe, ou seja, criaremos nossos objetos baseados nas caractersticas definidas nas classes. A nfase da metodologia orientada a objetos dada na criao das classes, e no dos objetos, como se poderia pensar pelo nome.
Os objetos do mundo real possuem propriedades que possuem valores. Estes valores definem o estado do objeto. As propriedades recebem o nome de atributos em OO. Podemos dizer que os atributos dos objetos so variveis ou campos que armazenam os diferentes valores que as caractersticas dos objetos podem conter. O estado de um objeto o conjunto de valores de seus atributos em um determinado instante. O comportamento de um objeto como ele age e reage em termos de suas mudanas de estado e troca de mensagens com outros objetos.
Para a resoluo do projeto da academia Power XY Gym, necessrio que algumas classes sejam criadas. A criao das classes consiste em: Classe Pessoa Classe que ficar responsvel pela incluso de dados de qualquer pessoa que tiver contato com a academia. Nela, se encontraro os seguintes atributos: Nome, CPF(atributo chave), RG, Idade, telefone, endereo, CEP, Senha. Classe Aluno - Classe que herdar de Classe Pessoa todos os atributos inclusos na Classe, acrescentando somente os atributos atividade, planos e cdigo que definiro a atividade (s) que o aluno realizar dentro da academia e o acesso que o aluno tem aos aparelhos, sendo descritos respectivamente. Classe Funcionrio: Classe que herdar de Classe Pessoa todos os atributos inclusos na Classe, acrescentando somente o atributo cargo, que definir o cargo de cada funcionrio, dizendo assim se o funcionrio instrutor, Administrativo, recepcionista, etc.
Mtodos Os mtodos so procedimentos ou funes que realizam as aes prprias do objeto. Assim, os mtodos so as aes que o objeto pode realizar. Tudo que o objeto faz realizado atravs de seus mtodos, pois atravs dos seus mtodos que um objeto se manifesta, e atravs deles que o objeto interage com os outros objetos. Um objeto exibe algum comportamento (executa uma operao) quando recebe um estmulo de outro objeto. Um objeto requisita a ao de algum outro objeto, enviando uma mensagem para ele. Esta mensagem uma solicitao a um objeto para que seja executada as rotinas que chamamos de Mtodo da classe. Os mtodos so responsveis por acessar ou alterar os atributos de um objeto. Em nosso projeto com a academia Power XY Gym, podemos considerar os seguintes mtodos para suas devidas classes: Classe Funcionrios Manuteno de Alunos: O sistema deve inserir, alterar, excluir e pesquisar os dados de alunos. Manuteno de Funcionrios: O sistema deve inserir alterar, excluir e pesquisar os dados de funcionrios. Manuteno de Usurios: O sistema deve inserir alterar, excluir e pesquisar os dados de usurios. Os campos de usurios so: cdigo, login, senha, cdigo_funcionrio. Autenticao por meio de Login: O sistema deve permitir acesso somente a usurios com login e senha. Com exceo a atividades de registro de presena do aluno e consulta de atividades. Manuteno de Atividades: O sistema deve inserir alterar, excluir e pesquisar os dados de atividades da academia. As atividades so treinos diferentes de musculao que ocorrem em horrios especficos, por exemplo: Spinning, Jump, Zumba e outras atividades possveis. Agendar Atividades: As atividades devem ser agendadas em um horrio especfico do dia da semana conforme disponibilidade do professor e da estrutura da academia.
Classe Alunos
Consultar Agenda de Atividades: O sistema deve permitir a exibio dos agendamentos da semana para os alunos. Registrar Presena de Alunos: O sistema deve receber o cdigo do aluno e registrar sua presena do dia.
Modificadores de Acesso e Encapsulamento
Encapsulamento o princpio de projeto pelo qual cada componente de um programa deve agregar toda a informao relevante para sua manipulao como uma unidade (uma cpsula). Aliado ao conceito de ocultamento de informao, um poderoso mecanismo da programao orientada a objetos. Com este mecanismo podemos ocultar detalhes de uma estrutura complexa, que poderiam interferir durante o processo de anlise. O encapsulamento um dos grandes trunfos da programao orientada a objetos em relao programao tradicional (estruturada). A vantagem que o encapsulamento disponibiliza o objeto com toda a sua funcionalidade sem que voc precise saber como ele funciona internamente, nem como armazena internamente os dados que voc recupera. Podemos exemplificar da seguinte forma, para telefonar para algum voc simplesmente pega um telefone e disca o nmero destino. Isto acontece sem que voc saiba quais foram os procedimentos que ocorreram na empresa telefnica que conectou voc ao destino que voc informou. Outro ponto importante permitir que voc faa modificaes internas em um objeto, acrescentando mtodos sem afetar os outros componentes do sistema que utilizam esse mesmo objeto. Para exemplificar esta vantagem, podemos retornar ao nosso exemplo do telefone, onde sabemos que a companhia telefnica pode efetuar diversas alteraes no tratamento telefnico, como o caso de converter as linhas analgicas para digitais, ou aumentar a quantidade de servios oferecidos, e isso tudo sem modificar o mtodo que voc utiliza para telefonar. Isto pode ser realizado porque a companhia telefnica encapsulou a maneira de realizar uma chamada telefnica. Assim, a empresa est livre para efetuar todas as alteraes que desejar, sem afetar a maneira como voc acessa os servios dessa companhia. O que importa para poder haver interao entre dois objetos que um conhea o conjunto de operaes disponveis do outro (interface) para que ento envie e receba informao, ou mesmo ordene a realizao de procedimentos.
Herana A palavra herana, conforme um dicionrio da lngua portuguesa, significa:
1. Aquilo que se herda; 2. Aquilo que se transmite por hereditariedade.
Um exemplo simples de explicar a herana a prpria gentica. Ou seja, um filho herda caractersticas genticas dos pais, e por sua vez, repassa essas caractersticas aos seus filhos. Na programao Orientada a Objetos, Herana o mecanismo pelo qual uma classe obtm as caractersticas e mtodos de outra para expandi-la ou especializ-la de alguma forma, ou seja, uma classe pode herdar caractersticas, mtodos e atributos de outras classes. Da mesma maneira uma classe transmite suas caractersticas para outras classes, tornando aquelas que recebem suas caractersticas suas herdeiras. Sob o ponto de vista prtico da orientao a objetos, a herana constitui um mecanismo muito inteligente de aproveitar cdigo. atravs da herana que os objetos podem compartilhar mtodos e atributos. Assim, podemos criar uma nova classe fazendo com que esta herde os mtodos e atributos de uma outra classe, tornando-a uma classe filho da classe que a gerou. A grande vantagem neste caso que reutilizaremos todo o cdigo j implementado na classe pai, restando apenas implementar os mtodos e atributos que a diferenciem da classe pai.
Em nosso projeto com a academia, utilizamos esse conceito quando:
- Classe Alunos herda atributos da Classe Pessoa; - Classe Funcionrios herda atributos da Classe Pessoa;
Mtodo Construtor O responsvel pela instanciao de um objeto sempre ser um mtodo construtor disponvel em sua classe. Todo construtor possui o mesmo nome da classe a que se refere e h um construtor padro na maioria das classes que dispensa o uso de argumentos. Toda classe tem, pelo menos, um construtor que o compilador adiciona, quando nenhum for declarado (construtor default). A instanciao feita atravs de uma operao de atribuio em que o objeto recebe o espao na memria que lhe for reservado pelo construtor. O operador new sempre preceder o construtor utilizado nessa operao. Caso seja utilizado o construtor padro (default), o nome do construtor ser seguido de um par de parnteses sem nada dentro, uma vez que ele no exige nenhum argumento.
Sobrecarga A sobrecarga (overload em ingls) a implementao, em uma mesma classe ou em classes ligadas pelo mecanismo de herana, de duas ou mais verses para um mesmo mtodo, de modo que manifestem comportamentos distintos. Nesse caso, o que os distinguir sua assinatura, ou seja, seu conjunto de parmetros. Sobrecarregar um mtodo escrever mtodos com nomes iguais, porm, com quantidade e tipos de parmetros de entrada diferentes. No possvel implementar um mtodo duas vezes com os mesmos tipos e quantidades de parmetros. Tambm possvel realizar a sobrecarga de construtores. Para isto basta definir mais do que um construtor seguindo as mesmas regras da sobrecarga de mtodos.