Engenharia De Sistemas C

Tamanho: px
Começar a partir da página:

Download "Engenharia De Sistemas C"

Transcrição

1 1 Engenharia De Sistemas C Conteúdo Programático 1. Orientação a Objetos; 2. A Linguagem C++; 3. Especificação e Documentação de Software; 4. Qualidade de Software. Critério de Avaliação 1. Duas provas parciais; 2. Uma prova final; 3. Uma prova de reposição parcial; 4. Uma prova de reposição final; 5. A prova final valerá também como reposição; 6. Um trabalho contribuirá com 20% da nota parcial.

2 2 1. Orientação a Objetos 1.1 Conceitos Teóricos Conceitos básicos da orientação a objetos A orientação a objetos possui três conceitos básicos: objetos, classes e herança. Pode-se dizer que a orientação a objetos é uma volta à infância. No jardim de infância, aprendemos a entender os seguintes conceitos: Objetos e suas propriedades: os objetos do mundo real possuem características estáticas e dinâmicas. Por exemplo, uma caneta é fina e comprida (características estáticas) e serve para escrever (característica dinâmica). Classes e seus membros: as classes são abstrações que capturam características dos objetos. Objetos com características semelhantes são membros da mesma classe. Como exemplo, temos a classe dos seres vivos. O gato e o cachorro são seres vivos diferentes, mas possuem características semelhantes, logo fazem parte da mesma classe (classe dos mamíferos). O todo e suas partes: um objeto pode ser composto por vários outros. Um objeto composto é considerado um objeto de nível mais alto. Os objetos componentes de um outro objeto é considerado um objeto de nível mais baixo. Um exemplo da vida real é um motor. Ele é um objeto composto de vários outros objetos menores (suas peças).

3 Objetos Abstraindo, então, os objetos do mundo real, caminhamos para a definição dos objetos de dados, que são compostos por duas partes: dados (propriedades estáticas) e de seus procedimentos (propriedades dinâmicas). Dados e procedimentos são expressões comumente usadas na análise estruturada. Essas expressões podem se correlacionar respectivamente com atributos e métodos na metodologia orientada a objetos e com informação e consultas e atualizações nos bancos de dados relacionais. (ref. Shlaer, S.; Mellor, S. J., Object lifecycles - Modeling the word in states, Yourdon Press Computing Series.) Os objetos podem: ser criados e, por conseqüência, destruídos; se comunicar, via passagem de mensagens (síncronas e assíncronas) ou via chamada de rotinas (síncronas); servir de base para comunicação como conteúdo de mensagens ou parâmetros de rotinas; ser compartilhado por outros objetos; ser protegidos Classe Classe é o conjunto de objetos de mesma classificação. Podemos encarar uma classe como um módulo que encapsula suas operações. Uma das principais conseqüências desta modularização é o menor impacto sofrido pelos sistemas em caso de manutenção. A classe é um tipo abstrato que engloba estado e operações. Dessa forma, as classes reúnem dados e funções, sendo tratadas de forma conjunta. (Rumbaugh, J.; Blaha, M.; Premerlani, W.; Eddy, F.; Lorensen, W., Modelagem e projetos baseados em objetos, ed. Campus.) Os objetos só existem em tempo de execução. Já as classes existem fisicamente mesmo quando o programa não está executando.

4 Para entender o mundo real, o homem constantemente emprega três métodos para organizar o seu pensamento: Diferenciação de experiências em objetos e seus atributos; Distinção entre objetos e suas partes; Formação e distinção entre diferentes classes de objetos. Esses três métodos constam da teoria da classificação e têm grande influência na reutilização de código. (Coad, P.; Yourdon, E., Object-oriented analisys, Yourdon Press Computing Series.) 4 Dessa maneira, a base para a classificação consiste em abstrair objetos do mundo real, organizando-os em classes conforme a equivalência entre eles. Boa parte dessa classificação se dá na modelagem de sistemas. Os sistemas orientados a objetos são coleções de classes. Assim, a classe é o bloco básico para a construção de sistemas. Já o objeto é a instância de uma classe, ou seja, os possíveis indivíduos que pertencem à classe.

5 Para definir uma classe, precisamos definir as propriedades comuns aos objetos da classe. De uma forma mais computacional, é preciso definir os atributos e os métodos (mensagens) que condizem com a classe. Como exemplo, podemos definir a classe pessoa. Atributos possíveis poderiam ser: primeiro nome: string; último nome: string; ano de nascimento: number; casado: boolean; veste: roupa. Uma pessoa poderia ter serviços (métodos ou mensagens) como casar-se, vestir-se ou dizer seu nome. Podemos dividir as classes em dois tipos: classes abstratas e concretas. As classes abstratas implementam características de suas subclasses. Já as classes concretas implementam métodos para suas subclasses. Por exemplo, a classe animal pode ser considerada uma classe abstrata, já que implementa características para suas subclasses, como tipo de respiração, alimentação peculiar, modo de locomoção, dentre outras. Então todas as suas subclasses (mamíferos, peixes etc) respiram, se alimentam, se locomovem etc. Já a classe peixe pode ser considerada uma classe concreta pois implementa métodos para suas subclasses, como por exemplo método respirar (água passa pelas brânquias, que retém o oxigênio). Esse método é utilizado por todas as subclasses de peixe, pois todos os peixes respiram dessa forma. 5

6 As classes podem se relacionar de duas maneiras: cliente/servidor e ascendente/descendente. Na primeira, uma classe depende de outra para executar alguma rotina. Isto se dá através de envio de mensagem. Por exemplo, uma classe que emite os contra-cheques dos funcionários de uma empresa precisa do nome de cada um deles. Porém, para conseguir esses nomes, ela terá que enviar uma mensagem a cada uma das instâncias de funcionário, pedindo o nome do mesmo. Essa mensagem poderia se chamar getnome. Já o relacionamento ascendente/descendente se dá através do conceito de herança, que será exposto posteriormente. Vamos aproveitar o exemplo anterior, onde a classe funcionário recebia a mensagem getnome. Imaginem que a classe funcionário seja subclasse da classe pessoa. Toda pessoa tem um nome. Espera-se, então, que o método getnome seja implementado na classe pessoa e herdado pela subclasse funcionário. Desta forma, funcionário executa o método getnome, herdando-o da superclasse pessoa, e não enviando mensagem a ela Subclasse As classes podem ser estruturadas hierarquicamente. Uma classe pode possuir uma ou mais subclasses e essas podem possuir outras subclasses e assim sucessivamente. A classe mãe da subclasse é conhecida como sua superclasse. Só se define uma subclasse quando existe uma característica particular adicionada às da superclasse. 6

7 Todo objeto pertencente a uma subclasse também pertence à superclasse. Porém o objeto na subclasse é caracterizado com mais detalhes. Na superclasse ele é mais genérico. O número de objetos na classe pode ser maior que a soma dos objetos das suas subclasses, porque podem haver objetos que só pertençam à classe (não serem subclasseados ). Mas é possível também que a soma dos objetos das subclasses seja maior que o número de objetos da superclasse. Isto porque um objeto pode pertencer ao mesmo tempo a duas subclasses de uma superclasse. Vejamos o exemplo em que modelamos um sistema para uma empresa distribuidora de energia. Temos uma superclasse parceirocomercial que representa as empresas ou pessoas físicas que tem algum relacionamento com a distribuidora de energia. Esses parceiros comerciais podem ser consumidores de energia e fornecedores. Isto está representado por duas subclasses: fornecedor e consumidor. O caso mais típico é o de uma pessoa comum. Ela é instanciada na classe consumidor, e por conseqüência na sua superclasse. Porém, existe um caso mais específico onde temos que instanciar uma empresa que fornece energia, como uma usina hidroelétrica. Acontece que ela é fornecedora, mas também é consumidora de energia, já que seus prédios administrativos consomem energia. Logo podemos instanciar o mesmo objeto parceirocomercial como fornecedor e consumidor. Dessa forma, a distribuidora de energia tem controle sobre duas informações de um mesmo parceiro comercial (se ele é um bom fornecedor, mas um mau consumidor, por exemplo). 7

8 Hierarquia de classes Um objeto em uma subclasse herda as propriedades definidas no nível da classe a qual pertence a subclasse. A herança pode ser simples ou múltipla. Simples quando uma classe só é subclasse de uma única classe. Múltipla quando ela pode ser subclasse de mais de uma classe, herdando as propriedades dessas. O smalltalk não suporta herança múltipla. Para podermos aproveitar melhor os recursos da herança, é importante observar características semelhantes em coisas completamente diferentes e não características diferentes em coisas muito parecidas.

9 Encapsulamento Os métodos encapsulam o comportamento de um objeto. As mensagens constituem a interface pública de um objeto. Somente através das mensagens, é possível executar um método, isto é, acessar um objeto. Porém, os métodos não são visíveis externamente ao objeto, ou seja, não se pode ver o funcionamento interno dos métodos de um objeto. A unidade de encapsulamento utilizada pela orientação a objetos é o objeto. Isto significa que um objeto guarda dentro de si todas as características de alguma coisa do mundo real. (Martin, J., Principios de análise e projeto baseado em objetos, ed. Campus.) Abstração É uma representação concisa de uma idéia ou de um objeto. Uma abstração nos ajuda a compreender algo complexo de forma simples, aumentando a nossa capacidade de lidar com a idéia ou com o objeto em questão.

10 1.1.2 Métodos para desenvolvimento orientado a objetos Visão Geral Somente no final dos anos 80 os métodos de desenvolvimento orientados a objetos começaram a ser divulgados. Uma defasagem de 10 anos para as técnicas estruturadas. Vários autores passaram a desenvolver métodos como Booch, Shlaer, Jacobison, Coad, Hood, Rumbaugh, dentre outros. Várias dessas propostas ganharam aceitação. Algumas dessas, surgidas meados da década de 90, eram adaptações dos métodos estruturados, sendo bem percebidos pelas pessoas que já os conheciam. Entretanto, esses métodos transitórios tinham um grande problema. Ao usar a análise estruturada junto com o projeto e a programação orientados a objetos, existia a necessidade de se fazer o mapeamento da análise para o projeto.

11 11 Outras porém, eram propostas completamente novas, sendo interessantes para aqueles que não tinham experiência em nenhum método. Neles, não existe necessidade de mapeamento, já que todas as fases, análise, projeto e programação são orientados a objetos. Os métodos totalmente orientados a objetos nos ajudam nos seguintes itens, em cada fase do desenvolvimento: ANÁLISE: identificar objetos; identificar classes; definir atributos; definir métodos.

12 12 PROJETO: Especificar módulos para implementação das classes; Especificar métodos. PROGRAMAÇÃO: Implementar classes; Implementar aplicação. Ao longo dos anos 90, a tendência tem sido a de unificação dos métodos existentes. Os pontos mais interessantes de cada um deles têm sido identificados em estudos conjuntos dos principais autores. Esta convergência originou em 96 a UML (Unified Modeling Language). A UML é uma linguagem de modelagem. Ainda não é um método para desenvolvimento e, portanto, não permite as definições de um processo para tanto.

13 Estratégia para desenvolvimento A análise, o entendimento e a modelagem conceitual do negócio são fundamentais para o sucesso dos sistemas. Melhorias nos processos, adequação dos processos ao negócio, alto nível de integração dos sistemas e de forma harmoniosa (sem transferências de arquivos), simplicidade do todo, alto nível de reutilização e facilidade para manutenção dependem fortemente de uma arquitetura baseada em um modelo conceitual do negócio. O modelo conceitual do negócio captura as principais abstrações e seus relacionamentos para o domínio do problema, isto é, os tipos essenciais de objetos do negócio. Já no modelo da análise é feito a determinação e o detalhamento das principais abstrações e seus relacionamentos a serem tratados pelo sistema. Pode ocorrer também a identificação de novas abstrações não percebidas no modelo conceitual do negócio. Tanto o modelo conceitual do negócio quanto o modelo da análise são modelos conceituais voltados para os usuários. O modelo do projeto decide a forma de implementação das principais abstrações e seus relacionamentos. Além disso, adiciona artefatos para implementação. É, na verdade, uma versão computacional do modelo da análise, sendo voltado para os analistas.

14 Processo de negócio Um processo é uma ordenação específica de atividades de trabalho, através do tempo e do espaço, com um início e um fim e entradas e saídas bem definidas. Pode ser considerado uma estrutura de ação. (Davenport, T., Process Innovation: Reengineering Business Processes through Information Technology, Harvard Business School Press) Um processo de negócio é um conjunto de atividades internas realizadas para servir a um cliente. O propósito de cada processo de negócio é oferecer a cada cliente o produto ou serviço correto. (Jacobson, I.; Ericsson, M.; Jacobson, A., Business Process Re-engeneering with Object Technology, Addison-Wesley.) A modelagem conceitual de objetos de um negócio considera um processo de negócio isoladamente. Está voltada para as necessidades do processo, e não para a integração. O produto final é o modelo conceitual dos tipos de objetos tratados pelo processo. A modelagem conceitual de objetos de um sistema considera um sistema específico e está voltada para as necessidades do próprio e não para a integração. O seu produto é o modelo conceitual dos tipos de objetos tratados pelo sistema. Todas as consultorias, que promovem a reengenharia em uma empresa, deveriam gerar este modelo no final de seu trabalho. A modelagem conceitual de objetos de uma área de negócio considera uma área de negócio da empresa. Utiliza os modelos dos processos da área e está voltada para a integração e reutilização no nível da área. Produz o modelo conceitual dos tipos de objetos utilizados pela área. Finalmente, a modelagem conceitual de objetos da empresa como um todo considera o negócio global da empresa. Utiliza os modelos das áreas de negócio e está voltada para a integração e reutilização no nível da empresa. Produz o modelo conceiutal dos tipos de objetos utilizados pela empresa.

15 Técnicas de análise para orientação a objetos Questões básicas Quando analisamos um problema, algumas perguntas básicas nos ocorrem. As técnicas de análise orientada a objetos exposta agora sugere um modelo como resposta a cada uma dessas perguntas. A seguir, vemos cada uma delas relacionadas com as modelagem propostas. Quem vai utilizar o sistema e para fazer o quê? Resposta: Modelagem dos casos de uso. Que classes existem? O que define o estado dos objetos de cada classe? Qual o comportamento esperado para os objetos de cada classe? Quais os relacionamentos existentes entre cada classe? Resposta: Modelagem de classes. Como os estados dos objetos são afetados pelos eventos externos e sua ordenação? Resposta: Modelagem do ciclo de vida dos objetos. Que mecanismos de colaboração entre objetos são necessários para dar a funcionalidade desejada para a aplicação? Resposta: Modelagem de mecanismos Modelagem de casos de uso Apesar de ter nascido no contexto da orientação a objetos, a modelagem de casos de uso não tem nenhum vínculo com ela, podendo ser utilizado em qualquer metodologia. Um caso de uso modela uma perspectiva de utilização do sistema por parte de um tipo de usuário. Só é considerado como caso de uso, os que agregam um valor ao uso do sistema, isto é, tem que ser uma tarefa completa e não parte de uma tarefa. (Jacobson, I., Object-oriented software engineering - A use case driven approach, Addison-Wesley.)

16 Podemos considerar, como exemplos de casos de uso de um sistema de contas correntes de um banco, uma retirada de dinheiro de um caixa eletrônico, uma transferência de fundos, um depósito e a manutenção do administrador do caixa eletrônico. A ação do usuário se identificar não é considerado um caso de uso, pois não agrega valor (não é uma tarefa completa). 16 Os usuários acessam um sistema interagindo com seus casos de uso. Desse modo, um caso de uso modela um modo de utilização do sistema, expressa um requisito de uso a ser atendido, captura uma perspectiva de uso e é externamente observável por um usuário. O conjunto de casos de uso de um sistema especifica todos os seus requisitos de utilização, facilitando a medição de tempo de desenvolvimento do sistema. Também modela o sistema, o seu ambiente e como esses estão relacionados e descreve como o sistema é visto externamente por seus usuários. A modelagem é feita através de interações entre analistas e usuários e deve ser feita na fase inicial de especificação do sistema. Um modelo de casos de uso é um gráfico que apresenta: atores, casos de uso e a interação entre eles.

17 Primeiro, identifica-se os atores, isto é, todos os elementos externos que se relacionam com o sistema. Depois os casos de uso e seus relacionamentos. A especificação deve prever as seqüências normais (o que o usuário faz normalmente), as seqüências alternativas (coisas a mais que se pode fazer) e as excepcionais (situações especiais, como a falta de dinheiro no caixa eletrônico). A formalização da especificação pode ser feita através de pseudocódigo ou diagramas de interação (diagrama de seqüência ou diagrama de colaboração). 17

18 18 A validação desse modelo passa pelos seguintes itens: Revisar e refinar, interativamente, o modelo; Conceber, descrever e prototipar as interfaces a serem utilizadas pelos usuários; Quando aprovadas, liberar uma nova versão do modelo de casos de uso. As aplicações desse modelo estão no planejamento e organização do desenvolvimento, planejamento e especificação dos testes e estruturação e desenvolvimento dos manuais de usuário. Em resumo, o modelo de casos de uso representa tudo que os usuários podem fazer com o sistema. Dessa forma, esse modelo é válido como um contrato entre os usuários e os analistas sobre o que poderá ser feito através do sistema. (Jacobson, I., Object-oriented software engineering - A use case driven approach, Addison-Wesley.) (Jacobson, I., Basic use case modeling, Addison-Wesley.) Modelagem de classes As técnicas de modelagem de classes persistem na identificação de classes e na identificação dos relacionamentos entre classes. Além destas, existem mais duas técnicas complementares que nos auxiliam a fazer o modelo de classes: a percepção e modelagem do domínio do problema; a modelagem de cada caso de uso. Primeiramente, é interessante abstrair o problema e fazer o modelo de classes do todo.

19 Depois, fazer o modelo de classes para cada caso de uso e validar cada um desses com o modelo do todo. A notação básica para classes é a seguinte: 19

20 O que podemos observar para melhor identificação de objetos e classes: As estruturas. 20 Outros sistemas com o qual o nosso irá interagir, recebendo e enviando informações, controlando ou sendo controlado. Também outros sistemas do mesmo domínio de problema, existentes na empresa, em outras empresas ou em bibliotecas de classes. Com que equipamentos o sistema irá interagir, como sensores, por exemplo. Eventos para os quais se deseja fazer planejamento, fazer programação, reter informações e analisar conseqüências. O papel exercido pelas pessoas que atuam no domínio do problema. Observar os locais, como posição geográfica e localização física. A organização da empresa (setores, departamentos, subsidiárias, filiais etc) e do negócio (segmentos, áreas de atuação etc). Outra fonte de inspiração são os padrões (patterns).

21 Padrões são soluções genéricas, em forma de modelo de classes, que são catalogadas para serem utilizadas em problemas com domínios parecidos. Esta idéia vem da arquitetura, onde são utilizados vários padrões de plantas, conforme a necessidade do projeto. Os padrões são a grande sensação do momento, pois oferece grande chance de reutilização de código Modelagem do ciclo de vida dos objetos das classes Existem três pontos básicos para este modelo: estados, eventos e operações. Durante sua existência, um objeto passa por diferentes estados, de acordo com os eventos que ocorrem com ele, provocando a execução de operações. (Shlaer, S.; Mellor, S. J., Object lifecycles - Modeling the word in states, Yourdon Press Computing Series.) Por exemplo, para uma conta corrente temos: ESTADOS EVENTOS OPERAÇÕES Em abertura Solicitação de abertura Abrir a conta Ok Aceite do banco Colocar conta ativa Tratando transação Retirada Tratar retirada 21

22 O comportamento de um sistema pode ser expresso em termos da coordenação do comportamento de todos os objetos com os quais ele lida. O comportamento de um objeto pode ser estudado através da análise do seu ciclo de vida. O modelo de estado representa o ciclo de vida de um objeto através dos seguintes conceitos: estado, evento e ação. Durante sua existência, um objeto passa por alguns estados, de acordo com os eventos que ocorrem com ele. Por exemplo, um projeto passa pelos seguintes estados: em estudo, aguardando aprovação, aguardando alocação de recursos, em execução e concluído. Durante a permanência de um objeto em um estado, ele segue um conjunto de regras: as leis físicas e as políticas operacionais que regulam o seu comportamento. O estado de um objeto representa o resultado acumulado de seu comportamento. Para certos estados, é útil apresentar as ações a ele associadas. Um evento é um acontecimento que pode causar uma transição de estado. A partir de um mesmo estado, um evento só pode causar uma transição de estado. Por exemplo, um funcionário ao receber seu salário não sofre alteração de seu estado. Já, ao entrar de férias, muda de estado. No mundo real, existem acontecimentos envolvendo uma instância de um objeto. Um acontecimento possui dois aspectos relevantes: o fato que aconteceu e com quem aconteceu. Esses aspectos são formalizados através do conceito de evento, um sinal de controle que leva consigo o identificador da instância do objeto envolvida no acontecimento. Um evento causa uma transição de um estado para outro ou do estado para ele mesmo. A identificação de eventos nos ajuda a definir as fronteiras do sistema e assinalar responsabilidades comportamentais para as classes, já que um evento pode provocar a execução de alguma ação. Ações são operações instantâneas. As atividades são operações não instantâneas. O ciclo de vida de um objeto pode ser analisado através de um gráfico que apresente: 22

23 23 Os estados pelos quais o objeto passa durante sua vida; Os eventos que provocam as mudanças de estado; As ações a serem executadas. Por que analisar o ciclo vida de um objeto? Para melhorar o entendimento do comportamento do objeto; Para auxiliar a identificação dos métodos; Para verificar se todos os atributos foram identificados; Para refinar e complementar as restrições de integridade. Para quais objetos devemos analisar o ciclo de vida? Para os que necessitamos melhorar a nossa compreensão; Para os que tem tratamento diferenciado em função dos seus estados; Para os que são fundamentais para a compreensão do negócio sendo modelado. Para criar o modelo de estados, o analista deve: 1. Identificar os estados, identificar os eventos e produzir o modelo: analisar a cronologia dos fatos, funções e eventos que afetam o objeto; analisar os atributos, identificando os que caracterizam a dinâmica de estados do objeto. 2. Identificar os eventos de interesse: os que provocam alteração de atributos que caracterizam a dinâmica de estado do objeto; os que são pré-requisitos para a ocorrência de outros eventos; os que provocam e determinam a execução de métodos do objeto.

24 24 3. Produzir o modelo: ordenar cronologicamente os estados; associar os eventos aos estados; desenhar o modelo.

25 Modelagem de mecanismos Para cada caso de uso podem ocorrer diferentes cenários. Cada cenário deve ser tratado por um mecanismo de colaboração entre objetos. Existem duas técnicas equivalentes para modelar um mecanismo: Diagrama de seqüência (fluxo de mensagens entre objetos); Diagrama de colaboração (integração entre objetos).

26 26 Modelados os mecanismos, podemos identificar: as responsabilidades de cada objeto em cada mecanismo; as responsabilidades totais de cada objeto.

27 Linguagens Orientadas a Objetos Mensagens Possibilitam interação com os objetos São compostas por: nome do objeto nome do método parâmetros menu_principal. seleciona (segunda_opcao) ; objeto mensagem parâmetro Normalmente são bidirecionais Programação OO com C++ Na prática de programação orientada a objetos estaremos atentos em nossos programas para pontos como: Compatibilidade, portabilidade. Segurança. Reusabilidade. Facilidade de integração.

28 28 Facilidade de extensão. Eficiência Classes e Objetos Uma classe é um tipo definido pelo usuário que contém o molde, a especificação para os objetos, assim como o tipo inteiro contém o molde para as variáveis declaradas como inteiros. A classe envolve, associa, funções e dados, controlando o acesso a estes, definí-la implica em especificar os seus atributos (dados) e suas funções membro (código). Um programa que utiliza uma interface controladora de um motor elétrico provavelmente definiria a classe motor. Os atributos desta classe seriam: temperatura, velocidade, tensão aplicada. Estes provavelmente seriam representados na classe por tipos como float ou long. As funções membro desta classe seriam funções para alterar a velocidade, ler a temperatura etc. Um programa editor de textos definiria a classe parágrafo que teria como um de seus atributos uma string ou um vetor de strings, e como funções membro, funções que operam sobre estas strings. Quando um novo parágrafo é digitado no texto, o editor cria a partir da classe parágrafo um objeto contendo as informações particulares do novo texto. Isto se chama instanciação ou criação do objeto. Classes podem ser declaradas usando a palavra reservada struct ou a palavra reservada class Especificando Uma Classe Suponha um programa que controla um motor elétrico através de uma saída serial. A velocidade do motor é proporcional à tensão aplicada, e esta proporcional aos bits que vão para saída serial e passando por um conversor digital analógico. Vamos abstrair todos esses detalhes por enquanto e modelar somente a interface do motor como uma classe, a pergunta é que funções e que dados membro deve ter nossa classe, e que argumentos e valores de retorno devem ter essas funções membro:

29 29 Representação da velocidade: A velocidade do motor será representada por um atributo, ou dado membro, inteiro (int). Usaremos a faixa de bits que precisarmos, caso o valor de bits necessário não possa ser fornecido pelo tipo, usaremos então o tipo long, isso depende do conversor digital analógico utilizado e do compilador. Representação da saída serial: O motor precisa conhecer a sua saída serial, a sua ligação com o "motor do mundo real". Suponha uma representação em hexadecimal do atributo endereço de porta serial, um possível nome para o atributo: enderecomotor. Alteração do valor da velocidade: Internamente o usuário da classe motor pode desejar alterar a velocidade, cria-se então o método (em C++ função membro): void altera_velocidade(int novav);. O código anterior corresponde ao cabeçalho da função membro, ela é definida junto com a classe motor, associada a ela. O valor de retorno da função é void (valor vazio), poderia ser criado um valor de retorno (int) que indicasse se o valor de velocidade era permitido e foi alterado ou não era permitido e portanto não foi alterado. Não faz sentido usar, chamar, esta função membro separada de uma variável do tipo motor, mas então porque na lista de argumentos não se encontra um motor? Esse pensamento reflete a maneira de associar dados e código (funções) das linguagens procedurais. Em linguagens orientadas a objetos o código e os dados são ligados de forma diferente, a própria declaração de um tipo definido pelo usuário já engloba as declarações das funções inerentes a este tipo Struct em C++ Objetos são instâncias de uma classe. Quando um objeto é criado ele precisa ser inicializado, ou seja, para uma única classe Estudante de graduação, podemos ter vários objetos em um programa Estudante de

30 graduação Carlos, Identificação , Curso Computação; Estudante de graduação Luiza, Identificação , Curso Engenharia Civil... A classe representa somente o molde para a criação dos objetos, esses sim contém informação Atributos ou Dados Membro Este exemplo declara uma struct e em seguida cria um objeto deste tipo em main alterando o conteúdo dessa variável. Uma struct é parecida com um record de Pascal, a nossa representa um círculo com os atributos raio, posição x, posição y, que são coordenadas cartesianas. Note que este objeto não possui funções membro ainda. #include <iostream.h> struct circulo //struct que representa um circulo. float raio; float x; //posicoes em coordenadas cartesianas float y; ; void main() circulo ac; //criacao de variavel, veja comentarios. ac.raio=10.0; //modificacao de conteudo (atributos) da struct ac.x=1.0; //colocando o circulo em uma posicao determinada ac.y=1.0; //colocando o circulo em uma posicao determinada cout << "Raio:"<<ac.raio <<endl; //verificacao dos atributos alterados. cout << "X:"<<ac.x << "\n"; // "\n"==endl cout << "Y:" <<ac.y<< endl;

31 31 Resultado do programa Raio:10 X:1 Y:1 Comentários struct circulo //struct que representa um circulo. float raio; float x; //posicoes em coordenadas cartesianas float y; ; Este código é a declaração da classe círculo, entre chaves vem os dados membro e as funções membro que não foram apresentadas ainda. A sintaxe para criação de objetos da classe círculo (circulo ac;), por enquanto não difere da sintaxe para a criação de variáveis do tipo int. O acesso aos dados membro deve ser feito usando o nome do objeto e o nome do dado membro, separados por um ponto: ac.raio=10.0;. Note que raio sozinho não faz sentido no programa, precisa-se especificar de que objeto se deseja acessar o raio Métodos ou Funções Membro A linguagem C++ permite que se acrescente funções de manipulação da struct em sua declaração, juntando tudo numa só entidade que é uma classe. Essas funções membro podem ter sua declaração (cabeçalho) e implementação (código) dentro da struct ou só o cabeçalho (assinatura) na struct e a implementação, código, fora. Este exemplo apresenta a primeira versão, o próximo a segunda versão (implementação fora da classe). Essas funções compõem a interface da classe. A terminologia usada para designá-las é bastante variada: funções membro, métodos etc.

32 Quando uma função membro é chamada, se diz que o objeto está recebendo uma mensagem (para executar uma ação). Um programa simples para testes sobre funções membro seria o seguinte: #include <iostream.h> struct contador //conta ocorrencias de algo int num; //numero do contador void incrementa(void)num=num+1;; //incrementa contador void comeca(void)num=0;; //comeca a contar ; void main() //teste do contador contador umcontador; umcontador.comeca(); //nao esqueca dos parenteses, e uma funcao membro e //nao atributo! cout << umcontador.num << endl; umcontador.incrementa(); cout << umcontador.num << endl; Resultado do programa 0 1 Comentários O programa define um objeto que serve como contador, a implementação representa a contagem no atributo num que é um número inteiro. As funções membro são simples: incrementa adiciona um ao contador em qualquer estado e comeca inicia a contagem em zero. A sintaxe para declaração de funções membro dentro de uma classe é a 32

33 mesma sintaxe de declaração de funções comuns: tipoderetorno nomedafuncao(lista_de_argumentos) /*codigo */. A diferença é como a função membro está definida na classe, ela ganha acesso direto aos dados membros, sem precisar usar o "ponto", exemplo um_objeto.dadomembro;. Lembre-se que as chamadas de funções membro já se referem a um objeto específico, embora elas sejam definidas de uma forma geral para toda a classe. A sintaxe de chamada ou acesso à funções membro é semelhante a sintaxe de acesso aos dados membro com exceção dos parênteses que contém a lista de argumentos da função, mesmo que a lista seja vazia eles devem estar presentes: umcontador.incrementa();. Primeiro insere-se o nome do objeto e depois a chamada da função, estes são separados por um ponto. Não esquecer os parênteses nas chamadas de funções membro. #include <iostream.h> //para cout struct circulo float raio; float x; //atributo coordenada cartesiana x float y; //atributo coordenada cartesiana y void move(float dx,float dy) //função membro ou função membro move x+=dx; //equivale a x=x+dx; y+=dy; void mostra(void) //função membro mostra cout << "Raio:"<<raio <<endl; cout << "X:"<<x << endl; cout << "Y:" <<y<< endl; ; void main() circulo ac; 33

34 34 // * instanciação de um objeto circulo (criacao) ac.x=0.0; ac.y=0.0; ac.raio=10.0; ac.mostra(); ac.move(1.0,1.0); ac.mostra(); ac.x=100.0; ac.mostra(); Resultado do programa Raio:10 X:0 Y:0 Raio:10 X:1 Y:1 Raio:10 X:100 Y:1 Comentários A função membro move altera as coordenadas do objeto. O objeto tem suas coordenadas x e y somadas com os argumentos dessa função membro. Note que esta função membro representa uma maneira mais segura, clara, elegante de alterar as coordenadas do objeto do que acessá-las diretamente da seguinte forma: ac.x+=dx;. ac.y+=dy;. Lembre-se que ac.x+=dx é uma abreviação para ac.x=ac.x+dx;. É possível imaginar que as definições de funções membro ocupam um grande espaço na representação interna dos objetos, mas lembre-se que elas são todas iguais para uma classe então basta manter para cada classe uma tabela de funções membro que é consultada no momento da chamada. Os objetos só precisam ter uma referência para esta tabela Funções Membro que Retornam Valores Uma função membro, assim como uma função comum, pode retornar

35 qualquer tipo, inclusive os definidos pelo usuário. Sendo assim, sua chamada no programa se aplica a qualquer lugar onde se espera um tipo igual ou equivalente ao tipo do seu valor de retorno, seja numa lista de argumentos de outra função, em uma atribuição ou em um operador como o cout << variavel;. #include <iostream.h> struct contador //conta ocorrencias de algo int num; //numero, posicao do contador void incrementa(void)num=num+1;; //incrementa contador void comeca(void)num=0;; //comeca a contar, "reset" int retorna_num(void) return num;; ; void main() //teste do contador contador umcontador; umcontador.comeca(); //nao esqueca dos parenteses, e uma funcao membro nao dado! cout << umcontador.retorna_num() << endl; umcontador.incrementa(); cout << umcontador.retorna_num() << endl; Resultado do programa Funções Declaradas Externas a Classe, Funções Membro Chamando Funções Membro Este exemplo apresenta a implementação, definição, das funções fora da declaração da struct. Além disso introduz uma nova função chamada inicializa e funções float retorna_raio (void); e void altera_raio (float a). 35

36 Inicializa coloca o ponto nas coordenadas passadas como seus argumentos. Comentários Em uma declaração de uma classe normalmente se coloca a declaração das funções membro depois da declaração dos atributos, porém podemos fazer intercalações ou adotar qualquer ordem que nos convenha. O programador não é obrigado a implementar as funções membro dentro da declaração da classe, basta defini-las e apresentar a implementação em separado segundo a sintaxe (compilável) descrita a seguir: #include <iostream.h> struct teste int x; void altera_x(int v); //somente definicao implementacao vem depois, fora da //classe ; void teste::altera_x(int v) x=v; //esta ja e a implementacao codigo void main() teste a; //instaciacao de um objeto a.altera_x(10); //chamada da funcao membro com valor 10 que sera //impresso a seguir cout << a.x; //imprimindo o dado membro Resultado do programa anterior 10 36

37 37 Programa exemplo círculo, mais complexo: #include <iostream.h> //para cout struct circulo float raio; float x; float y; void inicializa(float ax,float by,float cr); void altera_raio(float a); float retorna_raio(void); void move(float dx,float dy); void mostra(void); ; void circulo::inicializa(float ax,float by,float cr) x=ax; y=by; raio=cr; void circulo::altera_raio(float a) raio=a; float circulo::retorna_raio(void) return raio; void circulo::move(float dx,float dy) x+=dx; y+=dy; void circulo::mostra(void) cout << "Raio:"<< retorna_raio() <<endl; cout << "X:"<<x << endl; cout << "Y:" <<y<< endl; void main() circulo ac; ac.inicializa(0.0,0.0,10.0);

38 38 ac.mostra(); ac.move(1.0,1.0); ac.mostra(); ac.x=100.0; ac.altera_raio(12.0); ac.mostra(); Comentários Observe que a função membro mostra chama a função membro float retorna_raio(void) que é da mesma classe. Fica implícito da definição de mostra que retorna_raio() se aplica ao mesmo objeto instanciado que recebeu a chamada de mostra, ou seja, não é necessário usar o. (ponto) na chamada de retorna_raio(). Em programas maiores, chamadas aninhadas de funções membro são bastante comuns. Programação orientada a objetos e interfaces gráficas com o usuário Existem libraries de classes que permitem o programador C++ desenvolver aplicações para ambientes como o Microsoft Windowsreg de uma maneira bastante abstrata, este é um exemplo claro de reuso de código, afinal o programador não precisa saber de detalhes da interface para programar nela. Resultado do programa Raio:10 X:0 Y:0 Raio:10 X:1 Y:1 Raio:12.0 X:100.0 Y:1

39 Algo Parecido em Uma Linguagem Procedural Este tópico apresenta uma comparação entre C++ e Pascal, para tal implementou-se dois programas semelhantes. O programa C++ é o programa círculo do tópico anterior: O programa em Pascal vem a seguir: PROGRAM Comparacao; COMPARACAO COM UM PROGRAMA C++ TYPE Circulo=RECORD x:real; COORDENADAS X E Y y:real; r:real; somente dados END; var ac:circulo; leitura:integer; PROCEDURE Inicializa(var altereme:circulo;ax,by,cr:real); COLOCA O CIRCULO EM DETERMINADA POSICAO BEGIN altereme.x:=ax; altereme.y:=by; altereme.r:=cr; END; PROCEDURE Altera_Raio(var altereme:circulo;ar:real); ALTERA O RAIO DO CIRCULO BEGIN altereme.r:=ar; END; FUNCTION Retorna_Raio(copieme:Circulo):real; BEGIN Retorna_Raio:=copieme.r; END; PROCEDURE Move(var altereme:circulo;dx,dy:real); MODE AS COORDENADAS X E Y ACRESCENTANDO DX E DY BEGIN altereme.x:=altereme.x+dx; altereme.y:=altereme.y+dy; END; PROCEDURE Mostra(copieme:Circulo); MOSTRA O CIRCULO NA TELA

40 40 BEGIN writeln('x:',copieme.x,' Y:',copieme.y,' R:',copieme.r); END; BEGIN TESTES Inicializa(ac,0.0,0.0,10.0); Mostra(ac); Move(ac,1.0,1.0); Mostra(ac); ac.x:=100.0; Altera_Raio(ac,12.0); Mostra(ac); read(leitura); END. Resultado do programa X: E+00 Y: E+00 R: E+01 X: E+00 Y: E+00 R: E+01 X: E+02 Y: E+00 R: E+01 Comentários C++ As classes em C++ englobam os dados membros e as funções membros. Para executar uma ação sobre o objeto ou relativa a este basta chamar uma função membro para este: ac.mostra();. A função membro não precisa de muitos argumentos, porque é própria da classe e portanto ganha acesso aos dados membro do objeto para ao qual ela foi associada: float circulo::retorna_raio(void) return raio; //tenho acesso direto a raio. Pascal Em Pascal, os procedimentos e os dados são criados de forma separada, mesmo que só tenham sentido juntos. A junção entre os dados e procedimentos se dá através de passagem de parâmetros. No caso de uma linguagem procedural como Pascal, o

41 que normalmente é feito se assemelha ao código seguinte: Move(ac,1.0,1.0);. Ac nesse caso é um record, mas sem funções membro, algo semelhante ao struct de C (não C++). Move, acessa os dados do record alterando os campos. O parâmetro é passado por referência e o procedimento é definido a parte do registro, embora só sirva para aceitar argumentos do tipo Circulo e mover suas coordenadas. Segurança Em ambos os programas (Pascal, C++) o programador pode acessar diretamente os dados do tipo definido pelo usuário: ac.x:=100.0; (Pascal) ou ac.x=100.0; (C++). Veremos em ENCAPSULAMENTO maneiras de proibir em C++ este tipo de acesso direto ao dado membro, deixando este ser modificado somente pelas funções membro. Isto nos garante maior segurança e liberdade pois podemos permitir ou não o acesso para cada dado membro de acordo com nossa vontade. Eficiência Alguém pode argumentar que programas que usam bastante chamadas de funções podem se tornar pouco eficientes e que poderia ser melhor acessar diretamente os dados de um tipo definido pelo usuário ao invés de passar por todo o trabalho de cópia de argumentos, inserção da função na pilha etc. Em verdade não se perde muito em eficiência, e além disso muitas vezes não se deseja permitir sempre o acesso direto aos dados de um tipo definido pelo usuário por razões de segurança. Nesse sentido C++ oferece um recurso que permite ganhos em segurança sem perder muito em eficiência Construtores Construtores são funções membro especiais chamadas pelo sistema no momento da criação de um objeto. Elas não possuem valor de retorno, porque você não pode chamar um construtor para um objeto.

42 Contrutores representam uma oportunidade de iniciar de forma organizada os objetos, imagine se você esquece de iniciar corretamente ou o faz duas vezes etc. Um construtor tem sempre o mesmo nome da classe e não pode ser chamado pelo usuário desta. Para uma classe string, o construtor teria a forma string(char* a); com o argumento char* especificado pelo programador. Ele seria chamado automaticamente no momento da criação, declaração de uma string: string a("texto"); //alocacao estatica implica na chamada do construtor a.mostra(); //chamada de metodos estatica. Existem variações sobre o tema que veremos mais tarde: Sobrecarga de construtor, copy constructor, como conseguir construtores virtuais, construtor de corpo vazio. O exemplo a seguir é simples, semelhante aos anteriores, preste atenção na função membro com o mesmo nome que a classe (struct), este é o construtor: #include <iostream.h> struct ponto float x; float y; public: ponto(float a,float b); //esse e o contrutor, note a ausencia do valor de //retorno void mostra(void); void move(float dx,float dy); ; ponto::ponto(float a,float b) //construtor tem sempre o nome da classe. x=a; //incializando atributos da classe y=b; //colocando a casa em ordem 42

43 43 void ponto::mostra(void) cout << "X:" << x << ", Y:" << y << endl; void ponto::move(float dx,float dy) x+=dx; y+=dy; void main() ponto ap(0.0,0.0); ap.mostra(); ap.move(1.0,1.0); ap.mostra(); Resultado do programa X:0, Y:0 X:1, Y:1 Comentários Note que com a definição do construtor, você é obrigado a passar os argumentos deste no momento da criação do objeto Construtores e Agregação O programa exemplo deste tópico cria uma classe reta com dois dados membro da classe ponto. C++ permite que no construtor da classe reta, você chame os construtores dos atributos da classe ponto, se você não o fizer o compilador acusará um erro, pois os atributos ponto possuem construtores e eles precisam ser chamados para que a inicialização se complete de modo correto para o conjunto. Observe o código do construtor da classe reta usado no exemplo: reta(float x1,float y1,float x2,float y2): p1(x1,y1), p2(x2,y2) //nada mais a fazer, os construtores de p1 e p2 ja //foram chamados

44 p1(x1,y1) e p2(x2,y2) são as chamadas dos construtores da classe ponto, elas devem ficar fora do corpo do construtor, nesta lista separada por vírgulas você deve iniciar todos os atributos. Os tipos básicos como int, float, etc podem ser iniciados nessa lista. Por exemplo, se a classe reta tivesse um atributo inteiro de nome identificação, a lista poderia ser da seguinte forma: reta(float x1,float y1,float x2,float y2): p1(x1,y1),p2(x2,y2), identificacao(10) //nada mais a fazer, os construtores de p1 e p2 ja //foram chamados seria como se a identificação tivesse um construtor que tem como argumento seu valor. reta (float x1,float y1,float x2,float y2): p1(x1,y1),p2(x2,y2) identificacao=10; //tambem pode, porque tipos básicos (int) em C++ não //são objetos portanto nao tem construtores Uma outra alternativa seria usar alocação dinâmica para os atributos pontos que passariam a ser agora ponteiros para pontos. Nesse caso, o construtor da classe reta não precisaria criar os pontos. Vamos ao exemplo, que novamente é semelhante aos anteriores, para que o leitor preste atenção somente nas mudanças, que são os conceitos novos, sem ter que se esforçar muito para entender o programa: #include <iostream.h> struct ponto float x; float y; //coordenadas ponto(float a,float b) 44

45 x=a; y=b; //construtor void move(float dx,float dy) x+=dx; y+=dy; //funcao membro comum void inicializa(float a,float b) x=a; y=b; void mostra(void) cout << "X:" << x << ", Y:" << y << endl; ; struct reta ponto p1; ponto p2; reta(float x1,float y1,float x2,float y2):p1(x1,y1),p2(x2,y2) //nada mais a fazer, os contrutores de p1 e p2 ja //foram chamados void mostra(void); ; void reta::mostra(void) p1.mostra(); p2.mostra(); void main() reta r1(1.0,1.0,10.0,10.0); //instanciacao da reta r1 r1.mostra(); Resultado do programa X:1, Y:1 X:10, Y: Destrutores Análogos aos construtores, os destrutores também são funções membro 45

46 chamadas pelo sistema, só que elas são chamadas quando o objeto sai de escopo ou em alocação dinâmica, tem seu ponteiro desalocado, ambas (construtor e destrutor) não possuem valor de retorno. Você não pode chamar o destrutor, o que você faz é fornecer ao compilador o código a ser executado quando o objeto é destruído, apagado. Ao contrário dos construtores, os destrutores não tem argumentos. Os destrutores são muito úteis para limpar a casa quando um objeto deixa de ser usado, no escopo de uma função em que foi criado, ou mesmo num bloco de código. Quando usados em conjunto com alocação dinâmica eles fornecem uma maneira muito prática e segura de organizar o uso do heap. A importância dos destrutores em C++ é aumentada pela ausência de garbage collection ou coleta automática de lixo. A sintaxe do destrutor é simples, ele também tem o mesmo nome da classe só que precedido por ~. Ele não possui valor de retorno e seu argumento é void sempre: ~nomedaclasse(void) /* Codigo do destrutor */ A seguir, um exemplo simples: //destrutor de uma classe #include <iostream.h> struct contador int num; contador(int n) num=n; //construtor void incrementa(void) num+=1; //funcao membro comum, pode ser chamada pelo usuario ~contador(void) cout << "Contador destruido, valor:" << num <<endl; //destrutor ; void main() contador minutos(0); minutos.incrementa(); cout << minutos.num << endl; 46

47 47 //inicio de novo bloco de codigo contador segundos(10); segundos.incrementa(); cout << segundos.num <<endl; //fim de novo bloco de codigo minutos.incrementa(); Resultado do programa 1 11 Contador destruido, valor:11 Contador destruido, valor:2 Comentários 1. No escopo de main é criado o contador minutos com valor inicial==0. 2. Minutos é incrementado, agora minutos.num==1. 3. O valor de num em minutos é impresso na tela. 4. Um novo bloco de código é criado. 5. Segundos é criado, instanciado como uma variável deste bloco de código, o valor inicial de segundos é 10, para não confundir com o objeto já criado. 6. Segundos é incrementado atingindo o valor O valor de segundos é impresso na tela. 8. Finalizamos o bloco de código em que foi criado segundos, agora ele sai de escopo, é apagado, mas antes o sistema chama automaticamente o destrutor. 9. Voltando ao bloco de código de main(), minutos é novamente incrementado. 10. Finalizamos main(), agora, todas as variáveis declaradas em main() saem de escopo, mas antes o sistema chama os destrutores daquelas que os possuem Encapsulamento com Class Encapsulamento, data hiding. Neste tópico vamos falar das maneiras de restringir o acesso às declarações de uma classe, isto é feito em C++

48 através do uso das palavras reservadas public, private e protected. Friends também restringe o acesso a uma classe. Tudo que foi feito até agora pode ser feito com a palavra class ao invés de struct, incluindo pequenas modificações. Mas porque usar class? A diferença é que os dados membro e funções membro de uma struct são acessíveis por default fora da struct enquanto que os atributos e métodos de uma classe não são acessíveis fora dela (main) por default. Você nem deve ter se preocupado com isso porque usando struct da forma como usávamos, tudo ficava acessível. Então como controlar o acesso de atributos e métodos em uma classe? Simples, através das palavras reservadas private, public e protected. Public, private e protected podem ser vistos como qualificadores, (specifiers). Para facilitar a explicação suponha a seguintes declarações equivalentes de classes: (Declaração 1) class ponto float x; //dados membro float y; public: //qualificador void inicializa(float a, float b) x=a; y=b;; //funcao membro void move(float dx, float dy) x+=dx; y+=dy; ; ; A declaração 1 equivale totalmente à: (Declaração 2) class ponto private: float x; float y; 48

49 49 public: //qualificador void inicializa(float a, float b) x=a; y=b;; void move(float dx, float dy) x+=dx; y+=dy; ; ; que equivale totalmente à: (Declaração 3) struct ponto private: //se eu nao colocar private eu perco o encapsulamento //em struct. float x; float y; public: //qualificador void inicializa(float a, float b) x=a; y=b;; void move(float dx, float dy) x+=dx; y+=dy; ; ; Fica fácil entender essas declarações se você pensar no seguinte: esses qualificadores se aplicam aos métodos e atributos que vem após eles, se houver então um outro qualificador, teremos agora um novo tipo de acesso para os métodos declarados posteriormente. Mas então porque as declarações são equivalentes? É porque o qualificador private é default para class, ou seja, se você não especificar nada, até que se insira um qualificador, tudo o que for declarado numa classe é private. Já em struct, o que é default é o qualificador public. Agora vamos entender o que é private e o que é public: Vamos supor que você instanciou (criou) um objeto do tipo ponto em

LÓGICA DE PROGRAMAÇÃO (JAVA) CLASSES E OBJETOS. Professor Carlos Muniz

LÓGICA DE PROGRAMAÇÃO (JAVA) CLASSES E OBJETOS. Professor Carlos Muniz LÓGICA DE PROGRAMAÇÃO (JAVA) Classes Uma classe é um tipo definido pelo usuário que contém o molde, a especificação para os objetos, algo mais ou menos como o tipo inteiro contém o molde para as variáveis

Leia mais

NOTAS E RESTRIÇÕES DE USO DESTE DOCUMENTO:

NOTAS E RESTRIÇÕES DE USO DESTE DOCUMENTO: NOTAS E RESTRIÇÕES DE USO DESTE DOCUMENTO: ESTE DOCUMENTO É PROTEGIDO POR COPYRIGHT. VOCÊ PODE USA-LO DESDE QUE COMO DE COSTUME FAÇA REFERÊNCIA A ELE EM SEUS DOCUMENTOS. USO RESTRITO, MODIFICAÇÕES E VENDA

Leia mais

NOTAS E RESTRIÇÕES DE USO DESTE DOCUMENTO:

NOTAS E RESTRIÇÕES DE USO DESTE DOCUMENTO: NOTAS E RESTRIÇÕES DE USO DESTE DOCUMENTO: ESTE DOCUMENTO É PROTEGIDO POR COPYRIGHT. VOCÊ PODE USA-LO DESDE QUE COMO DE COSTUME FAÇA REFERÊNCIA A ELE EM SEUS DOCUMENTOS. USO RESTRITO, MODIFICAÇÕES E VENDA

Leia mais

Classes e Objetos. Sintaxe de classe em Java

Classes e Objetos. Sintaxe de classe em Java Classes e Objetos Classes e Objetos A Programação Orientada a Objetos (POO) é uma técnica de programação que se baseia na construção de classes e utilização de objetos. Os objetos são formados por dados

Leia mais

Esta categoria mais geral, à qual cada objeto pertence, denominamos de classe; IFSC/POO + JAVA - prof. Herval Daminelli

Esta categoria mais geral, à qual cada objeto pertence, denominamos de classe; IFSC/POO + JAVA - prof. Herval Daminelli Esta categoria mais geral, à qual cada objeto pertence, denominamos de classe; Tudo no mundo real pode ser representado por meio do conceito de "objeto": uma planta, uma mesa, uma pessoa, um sentimento,

Leia mais

Notas de Aula 03: Introdução a Orientação a Objetos e a UML

Notas de Aula 03: Introdução a Orientação a Objetos e a UML Notas de Aula 03: Introdução a Orientação a Objetos e a UML Objetivos da aula: Introduzir os conceitos da Orientação à Objetos (O.O) Introduzir os conceitos da UML Relacionar os processos às ferramentas

Leia mais

C com introdução a OO

C com introdução a OO ... Centro Integrado de Tecnologia da Informação C com introdução a OO ... Centro Integrado de Tecnologia da Informação Aula 9 Ronald Dener - Instrutor Matheus Soares - Monitor 17 / outubro 17 / outubro

Leia mais

ORIENTAÇÃO A OBJETOS SISTEMAS DE INFORMAÇÃO DR. EDNALDO B. PIZZOLATO

ORIENTAÇÃO A OBJETOS SISTEMAS DE INFORMAÇÃO DR. EDNALDO B. PIZZOLATO ORIENTAÇÃO A OBJETOS SISTEMAS DE INFORMAÇÃO DR. EDNALDO B. PIZZOLATO Tópicos picos Definição de estrutura Acessando membros de estruturas O tipo horario com struct Implementando horario com class Escopo

Leia mais

Paradigmas de Programação. Java First-Tier: Aplicações. Orientação a Objetos em Java (I) Nomenclatura. Paradigma OO. Nomenclatura

Paradigmas de Programação. Java First-Tier: Aplicações. Orientação a Objetos em Java (I) Nomenclatura. Paradigma OO. Nomenclatura Java First-Tier: Aplicações Orientação a Objetos em Java (I) Paradigmas de Programação Programação Funcional Programação Procedural Programação Orientada por Objetos Grupo de Linguagens de Programação

Leia mais

Na prática de programação orientada a objetos estaremos atentos em nossos programas para pontos como:

Na prática de programação orientada a objetos estaremos atentos em nossos programas para pontos como: TUTORIAL: "C++ COMO UMA LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS." Copyright 1996 André Augusto Cesta. aacesta@dcc.unicamp.br Orientadora: Profa Dra Cecília Mary Fischer Rubira PROGRAMAÇÃO ORIENTADA

Leia mais

Modelo do Mundo Real. Abstração. Interpretação

Modelo do Mundo Real. Abstração. Interpretação Modelo do Mundo Real Mundo Real Abstração Interpretação Sistema de Software Modelo Algoritmo Abstração: O modelo precisa capturar apenas as características do mundo real que são importantes para o sistema

Leia mais

Programação Orientada a Objetos. Professor: André Luis Meneses Silva br.geocities.com/programacao2ufs

Programação Orientada a Objetos. Professor: André Luis Meneses Silva br.geocities.com/programacao2ufs Programação Orientada a Objetos Professor: André Luis Meneses Silva andreluis.ms@gmail.com br.geocities.com/programacao2ufs [ Conteúdo ] Objeto Mensagens Classe Encapsulamento Visibilidade Membros de Instância

Leia mais

Orientação a objetos. Programação. Orientada a Objetos. Orientação a objetos. Orientação a objetos. Abstração e encapsulamento

Orientação a objetos. Programação. Orientada a Objetos. Orientação a objetos. Orientação a objetos. Abstração e encapsulamento Orientação a objetos Programação Orientada a Objetos Alexandre César Muniz de Oliveira Linguagens orientadas a procedimentos e linguagens orientadas a objetos Unidade de programação: funções e classes

Leia mais

Programação Orientada a Objetos

Programação Orientada a Objetos Curso Profissional de Gestão e Programação de Sistemas Informáticos Disciplina: Programação e Sistemas de Informação Programação Orientada a Objetos Módulos 9/10/11 POO 2016/2017 História A OO surgiu no

Leia mais

Linguagem de Programação II Programação Orientada a Objetos. Orientação a Objetos

Linguagem de Programação II Programação Orientada a Objetos. Orientação a Objetos Linguagem de Programação II Programação Orientada a Objetos Orientação a Objetos Prof. Alessandro Borges 2 Tópicos Introdução à Programação Orientada a Objetos Conceitos Objetivos Classes e Objetos Atributos

Leia mais

UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 15 PROFª BRUNO CALEGARO

UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 15 PROFª BRUNO CALEGARO UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 15 PROFª BRUNO CALEGARO Santa Maria, 08 de Novembro de 2013. Contextualização Nas próximas aula iremos começar a modelar e projetar sistemas

Leia mais

Laboratório de programação II

Laboratório de programação II Laboratório de programação II Herança e Polimorfismo Edson Moreno edson.moreno@pucrs.br http://www.inf.pucrs.br/~emoreno Herança Mecanismo da Orientação a Objeto que permite criar novas classes aproveitando

Leia mais

Televisao tamanho tela emitirsom. conectarperifericos

Televisao tamanho tela emitirsom. conectarperifericos 1 - Introdução a Programação Orientada a Objeto Para tentar solucionar o problema do baixo reaproveitamento de código, surgiu a idéia da Programação Orientada a Objeto (POO). A POO não é nova, sua formulação

Leia mais

Conceitos de Programação Orientada a Objetos

Conceitos de Programação Orientada a Objetos Conceitos de Programação Orientada a Objetos Tatyana Bitencourt Com as técnicas de orientação a objeto, é possível obter resultados considerados impossíveis pensando de maneira estruturada. Como Java não

Leia mais

Diagrama de Classes. Régis Patrick Silva Simão. Régis Simão Diagrama de Classes 1/42

Diagrama de Classes. Régis Patrick Silva Simão. Régis Simão Diagrama de Classes 1/42 Diagrama de Classes Régis Patrick Silva Simão Régis Simão Diagrama de Classes 1/42 Agenda Introdução Objetos Classes Atributos Operações & Métodos Relacionamentos Relacionamento: Associação Nome de Relacionamento

Leia mais

Introdução a orientação a objetos

Introdução a orientação a objetos 2 Introdução a orientação a objetos Introdução 2 Linguagens procedimentais 2 Um pouco de história 2 Idéias básicas da POO 2 Classe, atributo e método 2 Herança 3 Polimorfismo 3 Vantagens e desvantagens

Leia mais

TÉCNICAS DE ORIENTAÇÃO A OBJETOS

TÉCNICAS DE ORIENTAÇÃO A OBJETOS TÉCNICAS DE ORIENTAÇÃO A OBJETOS APLICAÇÃO EM: C# E JAVA Sumário INTRODUÇÃO... 4 PARADIGMAS DE PROGRAMAÇÃO... 5 PROGRAMAÇÃO PROCEDURAL... 5 PROGRAMAÇÃO ESTRUTURADA... 5 PROGRAMAÇÃO ORIENTADA A OBJETOS...

Leia mais

Programação Orientada a Objetos

Programação Orientada a Objetos Programação Orientada a Objetos Faculdade de Computação Aula Revisão Marcelo Zanchetta do Nascimento Material elaborado pela Profa. Ana Carolina Lorena - UNIFESP Desenvolvimento de Software ANÁLISE IMPLEMENTAÇÃO

Leia mais

MODELAGEM DE SISTEMAS. Introdução a Computação e Engenharia de Software. Profa. Cynthia Pinheiro

MODELAGEM DE SISTEMAS. Introdução a Computação e Engenharia de Software. Profa. Cynthia Pinheiro MODELAGEM DE SISTEMAS Introdução a Computação e Engenharia de Software Profa. Cynthia Pinheiro Introdução Modelagem de Sistemas: A modelagem de um sistema auxilia o analista a entender a funcionalidade

Leia mais

Instituto de Informática Estrutura de Dados II

Instituto de Informática Estrutura de Dados II Instituto de Informática Estrutura de Dados II Revisão de Métodos em Classes Aplicada a Estrutura de Dados Básicas 20/08/2018 Profa. Lucília Gomes Ribeiro Prof. Dirson S Campos Programação em Java q O

Leia mais

Programação Orientada a Objetos. Métodos e Atributos. Métodos. Métodos. Alexandre César Muniz de Oliveira. Parte III

Programação Orientada a Objetos. Métodos e Atributos. Métodos. Métodos. Alexandre César Muniz de Oliveira. Parte III Programação Orientada a Objetos Alexandre César Muniz de Oliveira Métodos e Atributos Parte III Métodos [mod] tipo nome ([tipo arg]) [throws exc]{ [mod]: zero ou mais modificadores separados por espaços

Leia mais

COMPORTAMENTOS - Observações

COMPORTAMENTOS - Observações COMPORTAMENTOS - Observações O próprio objeto realiza operações de consulta ou alteração dos valores dos seus atributos Essas operações são definidas em seus métodos Os métodos também são utilizados para

Leia mais

Programação com Objectos. Processamento de Dados I. 2. Classes, Atributos e Métodos

Programação com Objectos. Processamento de Dados I. 2. Classes, Atributos e Métodos Programação com Objectos Processamento de Dados I 2. Classes, Atributos e Métodos 1 Classes, Atributos e Métodos Modificadores de acesso (visibilidade) Sobrecarga de métodos (method overloading) Variáveis

Leia mais

Fundamentos, Conceitos e Aplicações do Paradigma de Orientação a Objetos

Fundamentos, Conceitos e Aplicações do Paradigma de Orientação a Objetos Fundamentos, Conceitos e Aplicações do Paradigma de Orientação a Objetos Prof. Dr. Marcelo Augusto Santos Turine Profa. Dra. Rosane Minghim Paradigma de Orientação a Objetos Surgiu na tentativa de solucionar

Leia mais

Linguagem de Programação I Apresentação da Disciplina

Linguagem de Programação I Apresentação da Disciplina Linguagem de Programação I Apresentação da Disciplina Apresentação da Disciplina Conteúdo: 1) Orientação a Objetos - Características da OO - Reutilização de código 2) Introdução à Linguagem Java - Histórico

Leia mais

Prof: Ricardo Quintão Site:

Prof: Ricardo Quintão   Site: Prof: Ricardo Quintão email: rgquintao@gmail.com Site: www.rgquintao.com.br Fundamentos da Programação Orientada a Objetos A Orientação a Objetos é uma tecnologia que enxerga os sistemas como sendo coleção

Leia mais

Algoritmos e Programação 2. Objetos e Classes em Java. Classes. Revisão. Definições de classes incluem (geralmente):

Algoritmos e Programação 2. Objetos e Classes em Java. Classes. Revisão. Definições de classes incluem (geralmente): Algoritmos e Programação 2 Baseado no material do Prof. Júlio Machado Objetos e Classes em Java Revisão Classes: encapsulam dados (atributos) e operações sobre os dados (métodos) Objetos: instâncias de

Leia mais

DIAGRAMAS DE CLASSE UML

DIAGRAMAS DE CLASSE UML DIAGRAMAS DE CLASSE UML Projeto Detalhado de Software (PDS) Profa. Cynthia Pinheiro Antes de mais nada... Calendário de Reposições Aula 1: 27/10/2017, 8h-10h, Sala 8 Aula 2: A verificar Aula 3: A verificar

Leia mais

MODELAGEM COM A UML (UNIFIED MODELING LANGUAGE)

MODELAGEM COM A UML (UNIFIED MODELING LANGUAGE) MODELAGEM COM A UML (UNIFIED MODELING LANGUAGE) g BREVE HISTÓRICO g CARACTERÍSTICAS g CONCEITOS DE PROGRAMAÇÃO ORIENTADA A OBJETOS g MODELAGEM DE ANÁLISE E DE PROJETO 1 I. BREVE HISTÓRICO Em fins dos anos

Leia mais

Linguagem de Programação C++

Linguagem de Programação C++ O que acontecerá se um programa driver para a classe Matriz efetuasse a seguinte sequência de instruções: #include "Matriz.h" int main() char opcao; switch (opcao) case 1: } 201 } int l, c; cout

Leia mais

Paradigmas de Linguagens de Programação. Suporte para Programação Orientada a Objeto

Paradigmas de Linguagens de Programação. Suporte para Programação Orientada a Objeto Suporte para Programação Orientada a Objeto Cristiano Lehrer Categoria das Linguagens que Suportam POO Suporte a POO acrescentado a uma linguagem já existente: C++ (também suporta programação procedural

Leia mais

Linguagem de Programação III

Linguagem de Programação III Linguagem de Programação III Aula-4 Construtores e Sobrecarga Prof. Esbel Tomás Valero Orellana Até Aqui Modelos e POO Classes e sua implementação em Java Encapsulamento Tipos de dados nativos em Java

Leia mais

Daniel Wildt

Daniel Wildt Orientação a Objetos 1 Daniel Wildt http://danielwildt.blogspot.com Agenda 2 Orientação a Objetos Classe x Objeto Representação classe Atributos / operações Construtores e Destrutores Liberando memória

Leia mais

Introdução à Orientação a Objetos em Java

Introdução à Orientação a Objetos em Java Introdução à Orientação a Objetos em Java Prof. Gustavo Wagner (Alterações) Slides originais: Prof. Tiago Massoni Desenvolvimento de Sistemas FATEC-PB Centro de Informática, UFPE Programação estruturada

Leia mais

Unidade: Introdução à POO (Programação Orientada a Objetos)

Unidade: Introdução à POO (Programação Orientada a Objetos) Unidade: Introdução à POO (Programação Orientada a Objetos) 0 Unidade: Introdução à POO (Programação Orientada a Objetos) Paradigmas de Programação Um paradigma de programação fornece (e determina) a visão

Leia mais

Tópicos da Aula. A Linguagem UML. A Linguagem UML. De onde surgiu? Fundadores da UML. Introdução à UML e Diagrama de Casos de Uso.

Tópicos da Aula. A Linguagem UML. A Linguagem UML. De onde surgiu? Fundadores da UML. Introdução à UML e Diagrama de Casos de Uso. Engenharia de Software Aula 07 Tópicos da Aula Introdução à UML e Introdução a UML Visão geral de alguns diagramas Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo dcc603@gmail.com 28 Março 2012 A

Leia mais

VB.NET - Orientação a objetos : conceitos básicos em 10

VB.NET - Orientação a objetos : conceitos básicos em 10 lições. VB.NET - Orientação a objetos : conceitos básicos em 10 Lição 1 - Como criar classe e métodos. Instanciando um objeto e acessando o método da classe. - Para criar uma classe basta usar a palavra

Leia mais

Herança Tiago Eugenio de Melo

Herança Tiago Eugenio de Melo Herança Tiago Eugenio de Melo tiago@comunidadesol.org Herança Conceito: Herança é a capacidade de especializar tipos de objetos (classes), de forma que os tipos especializados contenham, além de características

Leia mais

SEMINÁRIOS INTEGRADOS EM SISTEMAS DE INFORMAÇÃO. Luiz Leão

SEMINÁRIOS INTEGRADOS EM SISTEMAS DE INFORMAÇÃO. Luiz Leão SEMINÁRIOS INTEGRADOS EM SISTEMAS DE INFORMAÇÃO Luiz Leão luizleao@gmail.com http://www.luizleao.com Conteúdo Programático 4.1. Aplicações utilizando Programação Estruturada e Programação Orientada a Objeto.

Leia mais

C++ COMO UMA LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS.

C++ COMO UMA LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS. TUTORIAL: C++ COMO UMA LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS. Copyright 1996 André Augusto Cesta. aacesta@dcc.unicamp.br Orientadora: Profa Dra Cecília Mary Fischer Rubira 2 TUTORIAL: "C++ COMO

Leia mais

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE CAMPUS JOÃO CÂMARA UML UNIFIED MODELING LANGUAGE

INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE CAMPUS JOÃO CÂMARA UML UNIFIED MODELING LANGUAGE 1 INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE CAMPUS JOÃO CÂMARA UML UNIFIED MODELING LANGUAGE Nickerson Fonseca Ferreira nickerson.ferreira@ifrn.edu.br O que é?? 2 A UML

Leia mais

Introdução a classes e objetos. Copyright 2006 by Pearson Education

Introdução a classes e objetos. Copyright 2006 by Pearson Education 3 Introdução a classes e objetos 3.1 Introdução Programas do Capítulo 2 Todas as instruções estavam localizadas na função main. Em geral Os programas consistirão Na função main e Em uma ou mais classes

Leia mais

LINGUAGEM C: FUNÇÕES FUNÇÃO 08/01/2018. Funções são blocos de código que podem ser nomeados e chamados de dentro de um programa.

LINGUAGEM C: FUNÇÕES FUNÇÃO 08/01/2018. Funções são blocos de código que podem ser nomeados e chamados de dentro de um programa. LINGUAGEM C: FUNÇÕES Prof. André Backes FUNÇÃO Funções são blocos de código que podem ser nomeados e chamados de dentro de um programa. printf(): função que escreve na tela scanf(): função que lê o teclado

Leia mais

UML (Unified Modelling Language)

UML (Unified Modelling Language) UML (Unified Modelling Language) Curso de Especialização DEINF - UFMA Desenvolvimento Orientado a Objetos Prof. Geraldo Braz Junior Referências: Booch, G. et al. The Unified Modeling Language User Guide

Leia mais

Programação Orientada a Objeto

Programação Orientada a Objeto Programação Orientada a Objeto Prof. Esp. Thiago S F Carvalho Faculdades Integradas de Diamantino 2016 Caravalho, T.S.F. (FID) POO 2016 1 / 38 Programação Orientada a Objeto Hoje revisaremos os conceitos

Leia mais

Requisitos de sistemas

Requisitos de sistemas Requisitos de sistemas Unidade III - Casos de Uso Identificação de casos de uso Conceitos de orientação a objetos Modelagem do diagrama de classes e casos de uso 1 Casos de uso CONCEITO Especifica o comportamento

Leia mais

Introdução à Programação. Conceitos Básicos de Orientação a Objetos

Introdução à Programação. Conceitos Básicos de Orientação a Objetos Introdução à Programação Conceitos Básicos de Orientação a Objetos Tópicos da Aula Aprenderemos fundamentos do paradigma orientado a objetos, mas antes veremos o que é paradigma Conceito de paradigma Diferentes

Leia mais

Introdução. Diagramas de Interação. Introdução. Introdução. Introdução. Introdução. Os modelos de análise não respondem a algumas perguntas:

Introdução. Diagramas de Interação. Introdução. Introdução. Introdução. Introdução. Os modelos de análise não respondem a algumas perguntas: Diagramas de Interação Os modelos de análise não respondem a algumas perguntas: Como as operações do sistema são executadas internamente? A que classes estas operações internas pertencem? Quais objetos

Leia mais

Orientação a Objetos e Java

Orientação a Objetos e Java Orientação a Objetos e Java Daves Martins davesmartins@yahoo.com.br Mestre em Computação de Alto Desempenho pela UFRJ Especialista em Banco de Dados Analista Web Orientação a Objetos e Java Características

Leia mais

Unidade: sobrecarga, construtores e herança

Unidade: sobrecarga, construtores e herança Unidade: sobrecarga, construtores e herança 0 Unidade: sobrecarga, construtores e herança Sobrecarga Sobrecarregar (do inglês overload) um método é criar mais métodos com o mesmo nome, porém com assinaturas

Leia mais

Linguagem de Programação IV Introdução

Linguagem de Programação IV Introdução Linguagem de Programação IV Introdução Prof. Alessandro Borges 2 Tópicos Orientação a objetos Classe Objeto Abstração Encapsulamento Herança Polimorfismo Plataforma Java 3 4 POO é um paradigma de programação

Leia mais

Linguagens de Programação Aula 12

Linguagens de Programação Aula 12 Linguagens de Programação Aula 12 Celso Olivete Júnior olivete@fct.unesp.br Na aula passada Implementando subprogramas 2 Na aula de hoje Suporte para a programação orientada a objetos 3 Roteiro Introdução

Leia mais

LINGUAGEM C: FUNÇÕES FUNÇÃO 04/07/2017. Funções são blocos de código que podem ser nomeados e chamados de dentro de um programa.

LINGUAGEM C: FUNÇÕES FUNÇÃO 04/07/2017. Funções são blocos de código que podem ser nomeados e chamados de dentro de um programa. LINGUAGEM C: FUNÇÕES Prof. André Backes FUNÇÃO Funções são blocos de código que podem ser nomeados e chamados de dentro de um programa. printf(): função que escreve na tela scanf(): função que lê o teclado

Leia mais

Métodos Computacionais

Métodos Computacionais Métodos Computacionais Objetivos da Disciplina e Introdução a Linguagem C Construções Básicas Objetivos da Disciplina Objetivo Geral Discutir técnicas de programação e estruturação de dados para o desenvolvimento

Leia mais

INF1337 LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS

INF1337 LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS INF1337 LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS Departamento de Informática PUC-Rio Andrew Diniz da Costa andrew@les.inf.puc-rio.br Programa Capítulo 3 Ponteiros e Variáveis de Objeto Construtores

Leia mais

Fundamentos de Programação

Fundamentos de Programação Fundamentos de Programação ET43I Aula 5 Prof. Daniel Cavalcanti Jeronymo Orientada a Objetos e instâncias. Construtores, destrutores e operador de atribuição de cópia. Objetos, atributos, operações: mensagens

Leia mais

15/04/2013. Pensar Orientado a Objetos. Projeto Orientado a Objetos. Características de Objetos. Classe de Objetos. Comunicação entre Objetos

15/04/2013. Pensar Orientado a Objetos. Projeto Orientado a Objetos. Características de Objetos. Classe de Objetos. Comunicação entre Objetos DCC / ICEx / UFMG Pensar Orientado a Objetos Projeto Orientado a Objetos Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo Onde quer que você olhe no mundo real, você vê objetos Pessoas, animais, plantas,

Leia mais

Introdução ao Java. Prof. Herbert Rausch Fernandes

Introdução ao Java. Prof. Herbert Rausch Fernandes Introdução ao Java Prof. Herbert Rausch Fernandes Orientação a Objetos Programação Orientada por Objetos: é a construção de sistemas de software como uma coleção estruturada de implementações de tipos

Leia mais

Fundamentos de Programação 2

Fundamentos de Programação 2 Fundamentos de Programação 2 ET43G Aula 9 Prof. Daniel Cavalcanti Jeronymo e instâncias. Construtores, destrutores e operador de atribuição de cópia. Objetos, atributos, operações: mensagens e métodos,

Leia mais

3 Uma Abordagem Orientada a Aspectos para o Desenvolvimento de Frameworks

3 Uma Abordagem Orientada a Aspectos para o Desenvolvimento de Frameworks 48 3 Uma Abordagem Orientada a Aspectos para o Desenvolvimento de Frameworks Este capítulo apresenta uma visão geral da contribuição principal deste trabalho: uma abordagem orientada a aspectos para o

Leia mais

INF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS

INF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS INF1636 PROGRAMAÇÃO ORIENTADA A OBJETOS Departamento de Informática PUC-Rio Ivan Mathias Filho ivan@inf.puc-rio.br Programa Capítulo 3 Ponteiros e Variáveis de Objeto Construtores e Blocos de Inicialização

Leia mais

Programação para Games II. Professor Ariel da Silva Dias Orientação a Objetos

Programação para Games II. Professor Ariel da Silva Dias Orientação a Objetos Programação para Games II Professor Ariel da Silva Dias Orientação a Objetos Pacotes Pacotes são um modo de organizar classes e interfaces Um programa pode ser formado por centenas de classes individiduais;

Leia mais

Programação Avançada C++ Slide 12 Nielsen Castelo Damasceno

Programação Avançada C++ Slide 12 Nielsen Castelo Damasceno Programação Avançada C++ Slide 12 Nielsen Castelo Damasceno Visibilidade de membros Membro da classe derivada pode usar os membros públicos ( public ) e protegidos ( protected ) da sua classe base (como

Leia mais

UNIFEI Disciplina Professor

UNIFEI Disciplina Professor UNIFEI Disciplina Professor Universidade Federal de Itajubá Instituto de Engenharia de Sistemas e Tecnologias da Informação-IESTI CCO02 Enganharia de Software II Enzo Seraphim Nota de aula de Java Encapsulamento

Leia mais

Orientação a Objetos (OO) LPG II - Java. Orientação a Objetos (OO) Programação Orientada a Objetos. Programação Procedimental

Orientação a Objetos (OO) LPG II - Java. Orientação a Objetos (OO) Programação Orientada a Objetos. Programação Procedimental Orientação a Objetos (OO) LPG II - Java Orientação a Objetos (OO) Roberto Vedoato vedoato@joinville.udesc.br Programação Procedimental x Orientada a Objetos Objetivos e Benefícios da Orientação a Objetos

Leia mais

Programação Orientada a Objetos HERANÇA E COMPOSIÇÃO

Programação Orientada a Objetos HERANÇA E COMPOSIÇÃO Programação Orientada a Objetos HERANÇA E COMPOSIÇÃO Renato Dourado Maia Universidade Estadual de Montes Claros Engenharia de Sistemas Unidade IV Unidade IV Herança e Composição: Herança simples. Composição.

Leia mais

Tema da aula Introdução ao paradigma de programação: Orientado a Objetos

Tema da aula Introdução ao paradigma de programação: Orientado a Objetos Profa. Juliana Santiago Teixeira Disciplina: Programação Orientada a Objetos I Tema da aula Introdução ao paradigma de programação: Orientado a Objetos Paradigma Paradigma é a filosofia adotada na construção

Leia mais

Conceitos de Linguagens de Programação - Características. Paavo Soeiro

Conceitos de Linguagens de Programação - Características. Paavo Soeiro Conceitos de Linguagens de Programação - Características Paavo Soeiro Motivação Para que possa escolher uma linguagem apropriada ao problema. Melhorar o entendimento da linguagem utilizada. Facilitar o

Leia mais

MANUAL PARA DESENVOLVIMENTO DE SOFTWARE TRABALHO DE CONCLUSAO DE CURSO EM SISTEMAS DE INFORMAÇÃO

MANUAL PARA DESENVOLVIMENTO DE SOFTWARE TRABALHO DE CONCLUSAO DE CURSO EM SISTEMAS DE INFORMAÇÃO MANUAL PARA DESENVOLVIMENTO DE SOFTWARE TRABALHO DE CONCLUSAO DE CURSO EM SISTEMAS DE INFORMAÇÃO Sumário PREFÁCIO...3 MODELO DA DOCUMENTAÇÃO...3 1. INTRODUÇÃO AO DOCUMENTO...3 1.1. Tema...3 2. DESCRIÇÃO

Leia mais

FACULDADE BATISTA MINEIRA - CST Banco de Dados Estruturas de Dados - Variáveis

FACULDADE BATISTA MINEIRA - CST Banco de Dados Estruturas de Dados - Variáveis Variável, na Matemática, é um termo utilizado em substituição de outro, normalmente, desconhecido. É utilizado para representar um número ou um conjunto. No contexto da programação de computadores, uma

Leia mais

Programação Orientada a Objetos

Programação Orientada a Objetos 1 Programação Orientada a Objetos A linguagem C, desde a sua primeira especificação, vem sendo desenvolvida com várias extensões. De uma dessas extensões foi criada a Linguagem C++ onde encontramos diversas

Leia mais

Engenharia de Software e Gerência de Projetos Prof. Esp. André Luís Belini Bacharel em Sistemas de Informações MBA em Gestão Estratégica de Negócios

Engenharia de Software e Gerência de Projetos Prof. Esp. André Luís Belini Bacharel em Sistemas de Informações MBA em Gestão Estratégica de Negócios Engenharia de Software e Gerência de Projetos Prof. Esp. André Luís Belini Bacharel em Sistemas de Informações MBA em Gestão Estratégica de Negócios Cronograma das Aulas. Hoje você está na aula Semana

Leia mais

Introdução à Programação. Encapsulamento e Herança

Introdução à Programação. Encapsulamento e Herança Introdução à Programação Encapsulamento e Herança Tópicos da Aula Hoje, aprenderemos conceitos mais avançados de Orientação a Objetos Encapsulamento Usando modificadores de acesso em C++ Herança Importância

Leia mais

Classes. BCC Programação Orientada a Objectos(POO) Departamento de Computação - UFOP Baseado nos slides do Prof. Marco Antônio Carvalho

Classes. BCC Programação Orientada a Objectos(POO) Departamento de Computação - UFOP Baseado nos slides do Prof. Marco Antônio Carvalho Classes BCC 221 - Programação Orientada a Objectos(POO) Guillermo Cámara-Chávez Departamento de Computação - UFOP Baseado nos slides do Prof. Marco Antônio Carvalho Introdução I Estamos acostumados a criar

Leia mais

POO e C++: Herança e Polimorfismo

POO e C++: Herança e Polimorfismo POO e C++: Herança e Polimorfismo Márcio Santi Luiz Fernando Martha Conceito de Herança em POO Recurso que torna o conceito de classe mais poderoso; Permite que se construa e estenda continuamente classes

Leia mais

Programação I Funções. Prof. Carlos Alberto

Programação I Funções. Prof. Carlos Alberto Programação I Funções Prof. Carlos Alberto carlos.batista@facape.br carlos36_batista@yahoo.com.br Funções Funções são blocos de códigos que podem ser nomeados e chamados de dentro de um programa; Funções

Leia mais

Introdução. Pacote. Classe. UML Diagrama de. Atributo. Classes. Método. Prof. Dr. Enzo Seraphim. Visibilidade

Introdução. Pacote. Classe. UML Diagrama de. Atributo. Classes. Método. Prof. Dr. Enzo Seraphim. Visibilidade Introdução Pacote Classe Atributo UML Diagrama de Método Classes Visibilidade Prof. Dr. Enzo Seraphim História 60 70 COBOL, FORTRAN, C Métodos de Análise e Projeto Estruturado 80 início 90 s Smalltalk,

Leia mais

Orientação a Objetos (OO)

Orientação a Objetos (OO) CURSO: Ciência da Computação DATA: / / 2013 PERÍODO: 4 o. PROFESSOR: Andrey DISCIPLINA: Técnicas Alternativas de Programação AULA: 04 APRESENTAÇÃO: Hoje vamos discutir os conceitos de Orientação a Objetos.

Leia mais

Introdução a UML (Unified Modeling Language)

Introdução a UML (Unified Modeling Language) Introdução a UML (Unified Modeling Language) O que é a UML? Linguagem Gráfica de Modelagem para: Visualizar Especificar Construir Documentar Comunicar Artefatos de sistemas complexos Linguagem: vocabulário

Leia mais

Encapsulamento e Métodos (Construtores e Estáticos) João Paulo Q. dos Santos

Encapsulamento e Métodos (Construtores e Estáticos) João Paulo Q. dos Santos Encapsulamento e Métodos (Construtores e Estáticos) Sobrecarga de Métodos João Paulo Q. dos Santos joao.queiroz@ifrn.edu.br Roteiro Conceitos sobre Encapsulamento; Variável this; Métodos Construtores;

Leia mais

Classes, Métodos e Propriedades

Classes, Métodos e Propriedades Ambiente de Programação Visual Classes, Métodos e Propriedades Prof. Mauro Lopes 1-31 22 Objetivos Nesta aula iremos dar continuidade aos elementos de programação da Linguagem C#. Iremos apresentar de

Leia mais

Modelagem de Sistemas. Análise de Requisitos. Modelagem

Modelagem de Sistemas. Análise de Requisitos. Modelagem Modelagem de Sistemas Teoria Geral de Sistemas TADS 2. Semestre Prof. André Luís Para abordarmos de forma mais profunda os conceitos de Modelagem de Sistemas de Informação, precisamos também falar na Engenharia

Leia mais

Classes e Objetos INTRODUÇÃO À ORIENTAÇÃO A OBJETOS COM JAVA - MÓDULO II. Classes. Objetos. Um modelo para a criação de objetos

Classes e Objetos INTRODUÇÃO À ORIENTAÇÃO A OBJETOS COM JAVA - MÓDULO II. Classes. Objetos. Um modelo para a criação de objetos INTRODUÇÃO À ORIENTAÇÃO A OBJETOS COM JAVA - MÓDULO II Classes e Objetos Objetos Um conjunto de estados e comportamentos Classes Um modelo para a criação de objetos 1 Pacotes e Java API Pacotes Um conjunto

Leia mais

Ponteiros de Variáveis

Ponteiros de Variáveis Ponteiros de Variáveis C++ permite o armazenamento e a manipulação de valores de endereços de memória. Para cada tipo existente, há um tipo ponteirocapaz de armazenar endereços de memória em que existem

Leia mais

POO fundamentos Parte II. Professor Vicente Paulo de Camargo

POO fundamentos Parte II. Professor Vicente Paulo de Camargo POO fundamentos Parte II Professor Vicente Paulo de Camargo COMPORTAMENTOS Um comportamento expressa uma ação que um objeto ou instância de uma classe pode executar Na POO um comportamento é expresso através

Leia mais

Linguagem de programação Programação Orientada a objetos

Linguagem de programação Programação Orientada a objetos Instituto Federal de Minas Gerais Campus Ponte Nova Linguagem de programação Programação Orientada a objetos Professor: Saulo Henrique Cabral Silva Paradigma da orientação a objetos Paradigma = forma de

Leia mais

Introdução Diagrama de Classes Diagrama de Seqüência Diagrama de Atividades. Diagramas UML. Classe, Seqüência e Atividades. Marcio E. F.

Introdução Diagrama de Classes Diagrama de Seqüência Diagrama de Atividades. Diagramas UML. Classe, Seqüência e Atividades. Marcio E. F. Diagramas UML Classe, Seqüência e Atividades Marcio E. F. Maia Disciplina: Engenharia de Software Professora: Rossana M. C. Andrade Curso: Ciências da Computação Universidade Federal do Ceará 15 de maio

Leia mais

Modelagem Usando Orientação à Objetos (Programação Orientada a Objetos) Prof. Responsáveis Wagner Santos C. de Jesus

Modelagem Usando Orientação à Objetos (Programação Orientada a Objetos) Prof. Responsáveis Wagner Santos C. de Jesus Curso Disciplina Linguagem de Programação II Curso Engenharia da Computação Modelagem Usando Orientação à Objetos (Programação Orientada a Objetos) Site : http://www1.univap.br/~wagner/ec.html Prof. Responsáveis

Leia mais

POO Fundamentos Parte III. Professor Vicente Paulo de Camargo

POO Fundamentos Parte III. Professor Vicente Paulo de Camargo POO Fundamentos Parte III Professor Vicente Paulo de Camargo PROGRAMAÇÃO ORIENTADA A OBJETOS HERANÇA SIMPLES Mecanismo que permite a uma classe, denominada de SUBCLASSE ou CLASSE FILHA, herdar todos os

Leia mais

Computação eletrônica: Funções

Computação eletrônica: Funções Computação eletrônica: Gurvan Huiban ghuiban@cin.ufpe.br 13 de maio de 2014 Plano de aula 1 Princípio 2 Declaração de funções 3 Escope de variáveis Introdução O que é? Bloco de instruções desenvolvido

Leia mais

15/04/2013. Outro Diagrama de Classes. Primeiro Diagrama de Classes. Diagrama de Classes. Atributos. Eduardo Figueiredo

15/04/2013. Outro Diagrama de Classes. Primeiro Diagrama de Classes. Diagrama de Classes. Atributos. Eduardo Figueiredo DCC / ICEx / UFMG Primeiro Diagrama de Classes Diagrama de Classes Eduardo Figueiredo http://www.dcc.ufmg.br/~figueiredo Professor Aluno matricula Outro Diagrama de Classes Diagrama de Classes Serve de

Leia mais

Namespaces, Classes e Métodos.

Namespaces, Classes e Métodos. . Linguagem de Programação III Mauro Lopes Carvalho Silva Professor EBTT DAI Departamento Acadêmico de Informática Campus Monte Castelo Instituto Federal de Educação Ciência e Tecnologia do Maranhão Linguagem

Leia mais

1 Introdução. 1.1 Teoria dos Sistemas 23/4/2010

1 Introdução. 1.1 Teoria dos Sistemas 23/4/2010 1 1 Introdução 1.1 Teoria dos Sistemas 1.2 Constituição dos sistemas 1.3 Natureza dos sistemas 1.4 Parâmetros do sistema 1.5 Descrição de sistemas 1.6 Desafios enfrentados no desenvolvimento 1.7 Perfil

Leia mais

Visibilidade e Encapsulamento

Visibilidade e Encapsulamento Visibilidade e Encapsulamento Professor: Ricardo Luis dos Santos IFSUL 2016 Agenda Pacotes Visibilidade Encapsulamento Hands-On 2 Pacotes Em Java, a visibilidade ou grau de acesso a um determinado atributo

Leia mais