Programação Orientada a Objetos

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

Download "Programação Orientada a Objetos"

Transcrição

1 1/61 Programação Orientada a Objetos Introdução

2 2/61 #include <iostream> int main() { std::cout << "Bem-vindos a FCM-702 << std::endl; }

3 Número de linhas Ano SO Linhas (milhões) 1993 Windows NT Windows NT Windows NT Windows Windows XP Windows Server /61

4 Número de linhas SO Linhas (milhões) Debian Debian Debian Debian OpenSolaris 9.7 FreeBSD 8.8 Mac OS X 86 LinuxKernel LinuxKernel LinuxKernel /61

5 5/61 Custo Debian 2.2 (caso desenvolvido por empresa) 56 milhões de linhas pessoas-ano (4.000 linhas/pessoa/ano) 1,9 bilhão de dólares! Dados da Wikipedia.

6 6/61 Taxa de erros Após depuração! Software comercial: 5 para cada 1000 linhas Software militar: 1 para cada 1000 linhas

7 7/61 Desenvolvimento Ciclo de Vida

8 8/61 Ciclo de Vida Um software apresenta ciclo de vida Algumas fases do ciclo de vida: Especificação Desenvolvimento Manutenção

9 9/61 Especificação Antes de iniciar a programação deve-se saber o que se pretende com o programa. Especificação deve ser feita em conjunto com o cliente (usuário). Especificação deve resultar num contrato. Contratos com especificação formal são as soluções ideais.

10 Desenvolvimento Engloba: Programação. Testes. Documentação. O desenvolvimento deve partir da especificação. 10/61

11 Programação Deve fornecer uma implementação do produto especificado. Um método sistemático precisa ser usado para: Reduzir incidência de erros. Simplificar programação. Fornecer uma estrutura de comunicação entre diferentes programadores. Idealmente devem ser usados métodos formais. 11/61

12 Testes O programa deve ser continuamente testado. Os testes devem verificar: Que o programa esteja executando corretamente. Que ele seja adequado aos objetivos originais. Testes também ajudam a refinar a especificação. São realizados geralmente em duas fases: Alfa: testes internos. Beta: testes externos. 12/61

13 13/61 Documentação Envolve dois aspectos: Documentação externa: manuais de usuário, explicando as funcionalidades do software e seu uso. Permite ao usuário tirar proveito do software. Documentação interna: comentários no código e documentos descritivos. Permitem a compreensão do código do programa.

14 14/61 Manutenção Envolve todas as atividades relacionadas com programação do software após ele haver sido entregue ao usuário. Principais: Correção de erros. Parte do desenvolvimento adicional (novas versões que não impliquem em mudanças significativas).

15 Erros Erros de implementação. Erros internos. Erros de interação. Erros de compreensão. Erros de especificação. 15/61

16 16/61 Versões Usuários requerem novas funcionalidades ao iniciar a utilização do software. Mudanças externas (ex: legislação, novas técnicas industriais) requerem adaptação do software. Novas tecnologias permitem uma expansão das funcionalidades.

17 Histórico 17/61

18 18/61 Espaço Restrito Computadores iniciais tinham espaço para apenas alguns milhares de palavras. Muitas palavras eram necessárias para os dados do programa. Pouco espaço restante para o código do programa. Programas eram simples e pequenos.

19 19/61 Linguagem de Máquina Programas precisavam (e podiam) ser escritos como uma seqüencia de instruções de máquina. A=B+C LD R1, 1001 LD R2, 1002 ADD R1, R2 ST 1000, R1 HALT

20 Macro Assemblers Novas arquiteturas mais rápidas e com mais memória permitiram que o computador executasse parte do processo (geração do código binário). LD R1, _B LD R2, _C ADD R1, R2 ST _A, R1 HALT VAR _A VAR _B VAR _C MACRO SOMA (Z,X,Y) LD R1, X LD R2, Y ADD R1, R2 ST Z, R1 END MACRO SOMA (_A, _B, _C) HALT VAR _A VAR _B VAR _C 20/61

21 21/61 Linguagens de Alto Nível Novos desenvolvimentos permitiram operações mais complexas. Surgiram as linguagens de alto nível. Essas linguagens permitem ao programador esquecer a arquitetura do sistema e se concentrar no problema.

22 22/61 Complexidade Maior facilidade de programação estimulou o desenvolvimento de programas mais complexos. Programas mais complexos têm compreensão mais difícil. Técnicas de programação são introduzidas para facilitar o desenvolvimento. Volta-se ao primeiro ponto...

23 23/61 Complexidade Softwares atuais são muito complexos. Lembre-se dos números de linhas! Complexidade gera a chamada crise do software.

24 24/61 Equipes Um programador consegue desenvolver no máximo uns poucos milhares de linhas de código depurado por ano. Programas complexos precisam ser desenvolvidos por equipes de programadores. Limites de tempo exigem equipes ainda maiores. Os programadores precisam trabalhar efetivamente em equipe.

25 25/61 Divisão de Trabalho O trabalho precisa ser distribuído entre os programadores. É necessário determinar precisamente a forma de interação entre as diversas partes. Deve ser possível realizar testes (parciais) de partes sem que tudo esteja pronto. É necessário o uso de técnicas precisas de programação.

26 26/61 Técnica e Linguagem Idealmente a técnica utilizada deve ser refletida na linguagem. Se a técnica de programação não tem apoio na linguagem toda a informação estrutural fica externa ao código. Isso dificulta a implementação. Informação fica rapidamente desatualizada.

27 Orientação a Objetos Orientação a objetos usada para: Organização do software. Programação. Procura auxiliar na programação: Isolando detalhes de implementação. Facilitando o reaproveitamento de código. Facilitando o desenvolvimento de códigos extensíveis. 27/61

28 Programação Estruturada 28/61

29 29/61 Estruturas de Controle Substituição de código deve ser facilitada. Substituição é dificultada se um bloco a ser substituído tem múltiplos pontos de entrada ou múltiplos pontos de saída. Programação estruturada: cada bloco possui apenas um ponto de entrada e um ponto de saída.

30 Múltiplas Entradas Exemplo de múltiplas entradas: if (a > b) goto la; tmp = a; a = b; b = tmp; while (a!= b) { if (b > a) { tmp = a; a = b; b = tmp; } la: a -= b; } 30/61

31 Múltiplas Saídas Exemplo de múltiplas saídas: i = 0; while (i < n) { if (dados[i] == chave) goto fim; i++; } dados[i] = chave; cont[i] = 0; n++; fim: cont[i]++; return i; 31/61

32 32/61 Estruturas Padrão Desenvolvimento de um conjunto de estruturas padrão: Condicional (if). Seleção (switch). Repetição (while, for, do). Uso de rotinas (funções).

33 33/61 Rotinas Rotinas auxiliam na estruturação: O corpo da rotina pode ser inteiramente substituído (tem existência separada). A interação com o código restante é determinada por: Parâmetros. Valores de retorno. Variáveis globais utilizadas. Evitando variáveis globais desacoplamos a rotina de seu contexto.

34 34/61 Estrutura de Dados Dados distintos possuem relações entre si. As relações devem preferencialmente ser expressas na linguagem de programação. Para isso foram introduzidas técnicas de estruturação de dados.

35 35/61 Exemplo Precisamos manter uma lista de números. Além de guardar os números precisamos saber quantos números estão armazenados na lista. Primeira opção: Um vetor para guardar os números. Uma variável para indicar quantos números foram armazenados.

36 36/61 Exemplo Lista de inteiros: int lista[100]; int n; n = 0; /* outras operações */ lista[n] = 3; n++;

37 37/61 Problemas As variáveis lista e n são relacionadas logicamente, mas independentes no código. O código não apresenta a informação semântica da relação entre as duas variáveis. Segunda opção: Usar uma única variável para guardar tanto a lista como o contador. Permitir variáveis com estrutura interna.

38 38/61 Exemplo O mesmo exemplo usando dados estruturados: struct Lista { int lista[100]; int n; } umalista; umalista.n = 0; /* outras operações */ umalista.lista[umalista.n] = 3; umalista.n++;

39 39/61 Vantagens Contador e lista são claramente relacionados pelo uso de uma única variável. A mesma estrutura pode ser utilizada para outras listas semelhantes (simplesmente declarando novas variáveis desse tipo). No caso anterior, os lista e n das diversas listas não serão confundidos.

40 Orientação a Objetos 40/61

41 Estruturas e Operações A estruturas de dados são associadas geralmente operações. Ex: Na lista de inteiros: Inserção. Busca. Realizadas através e rotinas que operam sobre variáveis da estrutura. 41/61

42 Exemplo Lista de números e operações de inserção e busca nessa lista struct Lista { int lista[100]; int n; }; bool busca(lista *lst, int chave) { int i = 0; while (i < lst->n && lst->lista[i]!= chave) i++; return!(i == lst->n); } void insere(lista *lst, int valor) { lst->lista[lst->n] = valor; lst->n++; } 42/61

43 43/61 Problema Existe uma separação no código entre as estruturas utilizadas para representar os dados e as operações sobre elas. É interessante que haja uma ligação sintática entre os dados estruturados e as operações sobre eles. Isto está relacionado com tipos abstratos de dados.

44 Tipos Abstratos de Dados Ligam novos tipos de dados com as operações sobre eles. Permitem separar interface de implementação: Interface: a forma como o cliente enxerga o tipo. Implementação: a representação interna do tipo e a forma de implementação das operações. Isto providencia o que é conhecido com encapsulação da implementação. 44/61

45 Exemplo Lista de números e suas operações class Lista { int lista[100]; int n; public: bool busca(int chave); void insere(int valor); }; bool Lista::busca(int chave) { /*... */ } void Lista::insere(int valor) { lista[n] = valor; n++; } 45/61

46 Encapsulação Implementação (dados e possivelmente rotinas) fica encapsulada e inacessível para o cliente. Pode ser utilizada apenas por rotinas ligadas ao próprio tipo de dados. Erro na representação interna se deve a erro em alguma das rotinas do tipo. Se quisermos mudar a representação do tipo isso não afetará os clientes desde que a interface permaneça inalterada. 46/61

47 Exemplo Mudança da lista para lista ligada: class Lista { struct No { int val; No *prox; }; No *lista; public: /* Outros métodos */ bool busca(int chave); void insere(int valor); }; bool Lista::busca(int chave) { /*... */ } void Lista::insere(int valor){ No *novo = new No; novo->val = valor; novo->prox = lista; lista = novo; } 47/61

48 48/61 Representação Implementação Interface

49 49/61 Interação entre Objetos Mensagens

50 50/61 Composição Um objeto pode ser constituído de outros objetos, suas partes. Por exemplo: um carro tem motor, chassi, distribuição, sistema elétrico, etc. Cada uma das partes pode ser descrita por um tipo de dados distinto. Isso é denominado composição.

51 Composição 51/61

52 52/61 Herança Alguns tipos podem ser relacionados com outros por relação de subconjunto. Por exemplo: carro é um veículo, e portanto tem características e comportamento comuns a todos os veículos (forma de tração, capacidade de carga, anda, para, etc.). Esse tipo de relação pode ser indicada em orientação a objetos por meio de herança.

53 Cachorros com classe... class Comida { /*... */ }; class Animal { public: void anda(); void come(comida &c); }; class Cachorro : public Animal { public: void late(); }; class RacaoDeCachorro : public Comida { }; /*... */ RacaoDeCachorro mac_cao; Cachorro rex; rex.anda(); rex.come(mac_cao); rex.late(); 53/61

54 54/61 Usos de Herança Permite descrever sintaticamente a relação de subconjunto existente entre dois tipos. Permite reaproveitar código previamente desenvolvido para um tipo em tipos similares (subtipos). Permite abstrair características comuns a um conjunto de tipos.

55 55/61 Nomenclatura O tipo mais geral é chamado classe base ou superclasse. O tipo mais específico é chamado classe derivada ou subclasse. Uma hierarquia de classes indica uma ordem de classes base e derivadas, numa estrutura normalmente hierárquica.

56 56/61 Polimorfismo Se diversos objetos são de tipos derivados (direta ou indiretamente) de uma mesma classe base, então eles têm algumas características e comportamento em comum. Essa parte comum é definida pelas características presentes na classe base. Se existem características comuns, deve ser possível efetuar operações similares sobre todos esses objetos.

57 57/61 Polimorfismo Ao efetuarmos a operação sobre os diversos objetos da coleção desejamos que essa operação se adapte aos distintos tipos desses objetos. Se não sabemos de antemão quais os tipos dos objetos e isto precisa ser decidido no momento da execução, então estamos lidando com polimorfismo.

58 Exemplo Num software de desenho temos diversos tipos de figuras. Todas as figuras têm os mesmos tipos de comportamento: desenhar, mover, apagar, copiar, etc. Cada tipo de figura (círculo, triângulo, quadrado, etc.) tem uma forma diferente de realizar essas operações. Operações devem ser realizadas sobre grupos de figuras. 58/61

59 59/61 Exemplo Por exemplo: mover 5 figuras diferentes simultaneamente. As figuras que devem ser movidas são inseridas numa coleção. A ordem de mover é dada a todas as figuras dessa coleção. Cada figura aplica a operação de mover definida por seu tipo.

60 60/61 Vantagens Generalidade: uma algoritmo apenas precisa indicar que uma operação é necessária, mas não a forma de executá-la e portanto é válido para dados de todos os tipos compatíveis. O algoritmo não precisa saber de antemão todos os tipos de dados com os quais irá operar.

61 61/61 Continuação Detalhamento desses conceitos. Utilização desses conceitos para programação usando a linguagem C++. Detalhes da linguagem. Uso dos conceitos na linguagem. Alguns (vários?) conceitos adicionais.

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

Panorâmica da Programação Orientada a Objetos

Panorâmica da Programação Orientada a Objetos Panorâmica da Programação Orientada a Objetos Programação orientada a objetos (POO) é uma das maiores inovações na área de desenvolvimento de software. É importante você entender a POO e limitações das

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

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

Fundamentos de Programação. Linguagem C++ Introdução, identificadores, tipos de dados. Prof. Bruno E. G. Gomes IFRN

Fundamentos de Programação. Linguagem C++ Introdução, identificadores, tipos de dados. Prof. Bruno E. G. Gomes IFRN Fundamentos de Programação Linguagem C++ Introdução, identificadores, tipos de dados Prof. Bruno E. G. Gomes IFRN 1 Linguagem de Programação Constituída por símbolos e por regras para combinar esses símbolos

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

Compiladores Análise Semântica

Compiladores Análise Semântica Compiladores Análise Semântica Fabio Mascarenhas - 2013.2 http://www.dcc.ufrj.br/~fabiom/comp Árvores Sintáticas Abstratas (ASTs) A árvore de análise sintática tem muita informação redundante Separadores,

Leia mais

Programação Orientada a Objetos

Programação Orientada a Objetos Programação Orientada a Objetos Herança e Polimorfismo Msc. Paulo de Tarso F. Júnior 1 Projeto Orientado a Objetos O que desejam? Produção de projetos conceitualmente simples o bastantes para serem entendidos

Leia mais

Linguagem C Princípios Básicos (parte 1)

Linguagem C Princípios Básicos (parte 1) Linguagem C Princípios Básicos (parte 1) Objetivos O principal objetivo deste artigo é explicar alguns conceitos fundamentais de programação em C. No final será implementado um programa envolvendo todos

Leia mais

Introdução à Programação Aula 04. Prof. Max Santana Rolemberg Farias Colegiado de Engenharia de Computação

Introdução à Programação Aula 04. Prof. Max Santana Rolemberg Farias Colegiado de Engenharia de Computação Introdução à Programação Aula 04 Prof. Max Santana Rolemberg Farias max.santana@univasf.edu.br Colegiado de Engenharia de Computação QUAL LINGUAGEM IREMOS ESTUDAR? 2 Introdução à Programação Linguagens

Leia mais

Programação Orientada a Objetos

Programação Orientada a Objetos Programação Orientada a Objetos Introdução Alguns conceitos importantes Orientação a Objetos Alguns conceitos importantes Programação Estruturada X Programação OO Classes Objetos Construtores e Destrutores

Leia mais

Linguagens de Programação Classificação

Linguagens de Programação Classificação Classificação Classificação A proximidade que a linguagem de programação tem com a humana determina sua classe (o nível): Linguagem de máquina (primeira geração) Linguagem assembly - de montagem (segunda

Leia mais

Polimorfismo. O que é polimorfismo?

Polimorfismo. O que é polimorfismo? O que é polimorfismo? Polimorfismo Significa que variáveis podem referenciar mais do que um tipo. Não é um conceito novo e várias linguagens de programação aplicam. Funções são polimórficas quando seus

Leia mais

SEMINÁRIOS INTEGRADOS EM ADS PROGRAMAÇÃO ESTRUTURADA E ORIENTADA A OBJETOS

SEMINÁRIOS INTEGRADOS EM ADS PROGRAMAÇÃO ESTRUTURADA E ORIENTADA A OBJETOS SEMINÁRIOS INTEGRADOS EM ADS PROGRAMAÇÃO ESTRUTURADA E ORIENTADA A OBJETOS Prof. Dr. Daniel Caetano 2014-1 DISCUSSÃO Visão Geral dos Paradigmas Quais os paradigmas mais comuns? Do que é composto um programa

Leia mais

Algoritmos e Programação

Algoritmos e Programação Algoritmos e Programação Aula 3 Introdução a Linguagem C Profa. Marina Gomes marinagomes@unipampa.edu.br 1 Aula de Hoje - Criar programas simples em C utilizando a estrutura básica; - Declarar variáveis;

Leia mais

1 Introdução e Conceitos básicos

1 Introdução e Conceitos básicos 1 Introdução e Conceitos básicos Aula 02 Sumário Capítulo 1 Introdução e Conceitos básicos 1.1 Modelos 1.2 Tipos primitivos de dados 1.3 Tipo Abstrato de dados 1.4 Orientação a Objetos 1.4.1 Classe 1.4.2

Leia mais

Linguagem de Programação. Thiago Leite Francisco Barretto

Linguagem de Programação. Thiago Leite Francisco Barretto Linguagem de Programação Thiago Leite Francisco Barretto SCHILDT, H. C Completo e Total. 3ª Edição. São Paulo: Makron, 1997. Bibliografia Ementa

Leia mais

Introdução aos Algoritmos

Introdução aos Algoritmos Introdução aos Algoritmos Aula 05 Diogo Pinheiro Fernandes Pedrosa http://www2.ufersa.edu.br/portal/professor/diogopedrosa diogopedrosa@ufersa.edu.br Universidade Federal Rural do Semiárido Bacharelado

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

CONCEITOS DE LINGUAGENS DE PROGRAMAÇÃO

CONCEITOS DE LINGUAGENS DE PROGRAMAÇÃO CONCEITOS DE LINGUAGENS DE PROGRAMAÇÃO ROTEIRO 1. INTRODUÇÃO 2. LINGUAGENS IMPERATIVAS 1. CONCEITO 2. PARADIGMA IMPERATIVO 3. ORIGENS 4. MODELO COMPUTACIONAL 1. ARQUITETURA DE VON NEUMANN 2. CARACTERISTICAS

Leia mais

Introdução à Programação. João Manuel R. S. Tavares

Introdução à Programação. João Manuel R. S. Tavares Introdução à Programação João Manuel R. S. Tavares Sumário 1. Ciclo de desenvolvimento de um programa; 2. Descrição de algoritmos; 3. Desenvolvimento modular de programas; 4. Estruturas de controlo de

Leia mais

3. Linguagem de Programação C

3. Linguagem de Programação C Introdução à Computação I IBM1006 3. Linguagem de Programação C Prof. Renato Tinós Departamento de Computação e Matemática (FFCLRP/USP) 1 Principais Tópicos 3. Linguagem de programação C 3.1. Conceitos

Leia mais

Introdução aos Algoritmos

Introdução aos Algoritmos Introdução aos Algoritmos Aula 05 Diogo Pinheiro Fernandes Pedrosa http://www2.ufersa.edu.br/portal/professor/diogopedrosa diogopedrosa@ufersa.edu.br Universidade Federal Rural do Semiárido Bacharelado

Leia mais

Classificação das linguagens de programação

Classificação das linguagens de programação Introdução Linguagem É um meio de comunicação entre pessoas. Faculdade de expressão audível e articulada do homem. Conjunto de sinais falados, escritos ou gesticulados de que se serve o homem para demonstrar

Leia mais

Programação Orientada a Objetos. Vagner Luz do Carmo - Vluzrmos

Programação Orientada a Objetos. Vagner Luz do Carmo - Vluzrmos Programação Orientada a Objetos Vagner Luz do Carmo - Vluzrmos Questão 1 Dada a seguinte classe na linguagem JAVA: public class Carro { public String retornacor(){ ; return Azul ; private String retornachassi(){

Leia mais

Tipos Abstratos de Dados

Tipos Abstratos de Dados Tipos Abstratos de Dados Prof. Jussara Almeida Derivado das transparências do Algoritmos e Estrutura de Dados Algoritmo: Sequência de ações executáveis para a solução de um determinado tipo de problema

Leia mais

Arquitetura Von Neumann Dados e instruções são obtidos da mesma forma, simplificando o desenho do microprocessador;

Arquitetura Von Neumann Dados e instruções são obtidos da mesma forma, simplificando o desenho do microprocessador; 1 Microprocessador Um microprocessador é um circuito eletrônico capaz de realizar diversas tarefas conforme os comandos específicos. Para isso ele deve ler esses comandos da memória de programa (ROM) e

Leia mais

#include <stdio.h> Void main() { printf( Cheguei!\n"); } INTRODUÇÃO A LINGUAGEM C

#include <stdio.h> Void main() { printf( Cheguei!\n); } INTRODUÇÃO A LINGUAGEM C #include Void main() { printf( Cheguei!\n"); } INTRODUÇÃO A LINGUAGEM C ANTES DO C ERA A LINGUAGEM B B foi essencialmente uma simplificação da linguagem BCPL. B só tinha um tipo de dado, que

Leia mais

Puca Huachi Vaz Penna

Puca Huachi Vaz Penna Aula 3 C++: variáveis e expressões aritméticas 2017/1 BCC201 Introdução à Computação Turmas 61, 62, 63, 64, 65 e 66, 32 e 33 Puca Huachi Vaz Penna Departamento de Computação Universidade Federal de Ouro

Leia mais

Nomes, vinculações e escopos

Nomes, vinculações e escopos Nomes, vinculações e escopos Marco A L Barbosa malbarbo.pro.br Departamento de Informática Universidade Estadual de Maringá cba Este trabalho está licenciado com uma Licença Creative Commons - Atribuição-CompartilhaIgual

Leia mais

Linguagem C++ Estruturas de controle Parte II Estruturas de repetição

Linguagem C++ Estruturas de controle Parte II Estruturas de repetição Fundamentos de Programação Linguagem C++ Estruturas de controle Parte II Estruturas de repetição Prof. Bruno E. G. Gomes IFRN 1 Estruturas de Controle Permitem o controle da sequência de execução de um

Leia mais

Compiladores Análise Semântica

Compiladores Análise Semântica Compiladores Análise Semântica Fabio Mascarenhas - 2013.1 http://www.dcc.ufrj.br/~fabiom/comp Árvores Sintáticas Abstratas (ASTs) A árvore de análise sintática tem muita informação redundante Separadores,

Leia mais

Compiladores. Análise Semântica

Compiladores. Análise Semântica Compiladores Análise Semântica Cristiano Lehrer, M.Sc. Atividades do Compilador Arquivo de origem Análise léxica Análise semântica Síntese Análise sintática Análise Gramáticas Estruturas internas Arquivo

Leia mais

Programação: Vetores

Programação: Vetores Programação de Computadores I Aula 09 Programação: Vetores José Romildo Malaquias Departamento de Computação Universidade Federal de Ouro Preto 2011-1 1/62 Motivação Problema Faça um programa que leia

Leia mais

Linguagens de Programação

Linguagens de Programação Universidade Federal do Rio Grande do Norte Centro de Tecnologia Departamento de Computação e Automação Linguagens de Programação Professor Responsável: Luiz Affonso Henderson Guedes de Oliveira Prof.

Leia mais

Engenharia de Software

Engenharia de Software Sumário Engenharia de Software Modelos de desenvolvimento de software Fases de desenvolvimento Programação modular Abordagem top-down e bottom-up Linguagens de programação: Compilação / Interpretação Aplicação

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

SCC 202 Prova 1. 28/9/2010 Resolução e Comentários

SCC 202 Prova 1. 28/9/2010 Resolução e Comentários SCC 202 Prova 1 28/9/2010 Resolução e Comentários Questão 1) (3.5) Sobre TADs. a) O que é e quais são as vantagens de se utilizar Tipos Abstratos de Dados (TADs) no projeto de desenvolvimento de software?

Leia mais

Aula 1 Conceitos Básicos

Aula 1 Conceitos Básicos Aula 1 Conceitos Básicos Elerson R. S. Santos elerson@dcc.ufmg.br Livro Projeto de Algoritmos Capítulo 1 @ DCC/UFMG O que é um algoritmo? O que é um programa? O que é um TAD? Algoritmos e Estrutura de

Leia mais

//conteúdo do arquivo Matriz.h class Matriz { private: int *elementos; int numerodelinhas; int numerodecolunas; void setnumerodelinhas(int); void

//conteúdo do arquivo Matriz.h class Matriz { private: int *elementos; int numerodelinhas; int numerodecolunas; void setnumerodelinhas(int); void //conteúdo do arquivo Matriz.h class Matriz private: int *elementos; int numerodelinhas; int numerodecolunas; void setnumerodelinhas(int); void setnumerodecolunas(int); int getnumerodelinhas(); int getnumerodecolunas();

Leia mais

Nomes, vinculações e escopos

Nomes, vinculações e escopos Nomes, vinculações e escopos Marco A L Barbosa malbarbo.pro.br Departamento de Informática Universidade Estadual de Maringá cba Este trabalho está licenciado com uma Licença Creative Commons - Atribuição-CompartilhaIgual

Leia mais

2. Introdução à Programação e Análise. Orientada a Objetos

2. Introdução à Programação e Análise. Orientada a Objetos Programação Orientada a Objetos em C++ Renato Cardoso Mesquita Departamento de Eng. Elétrica da UFMG renato@cpdee.ufmg.br 2. Introdução à Programação e Análise.......... Orientada a Objetos 2.1. Introdução

Leia mais

Laboratório de programação II

Laboratório de programação II Laboratório de programação II Paradigma de orientação a Edson Moreno edson.moreno@pucrs.br http://www.inf.pucrs.br/~emoreno Sumário Contextualização Paradigma de orientação a Contextualização A construção

Leia mais

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Programação Orientada a Objectos - P. Prata, P. Fazendeiro 9 Classes Abstractas e Interfaces Classe Abstracta Classe em que pelo menos um dos métodos de instância não é implementado. Exemplo: public abstract class Forma{ public abstract double area(); public abstract

Leia mais

Processos de software

Processos de software Processos de software 1 Processos de software Conjunto coerente de atividades para especificação, projeto, implementação e teste de sistemas de software. 2 Objetivos Introduzir modelos de processos de

Leia mais

Algoritmos e Estruturas de dados

Algoritmos e Estruturas de dados Algoritmos e Estruturas de dados Listas Encadeadas Prof. Dr. Fábio Rodrigues de la Rocha (Listas Encadeadas) 1 / 21 Definição: Anteriormente estudamos listas encadeadas que foram implementadas como vetores

Leia mais

PROGRAMAÇÃO ESTRUTURADA E ORIENTADA A OBJETOS

PROGRAMAÇÃO ESTRUTURADA E ORIENTADA A OBJETOS INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA DO RIO GRANDE DO NORTE PROGRAMAÇÃO ESTRUTURADA E ORIENTADA A OBJETOS Docente: Éberton da Silva Marinho e-mail: ebertonsm@gmail.com eberton.marinho@gmail.com

Leia mais

Introdução à Programação

Introdução à Programação Introdução à Programação Aula 02 Algoritmos e Ciclo de Desenvolvimento Edirlei Soares de Lima Modelo de um Computador Linguagem de Máquina Um processador executa instruções de máquina.

Leia mais

Regras de estilo para código fonte em C/C++

Regras de estilo para código fonte em C/C++ Regras de estilo para código fonte em C/C++ No processo de escrita de código fonte em uma linguagem de alto nível é interessante que o programador se preocupe não somente com a correção sintática e lógica

Leia mais

Computadores Digitais 2. Prof. Rodrigo de Souza Couto

Computadores Digitais 2. Prof. Rodrigo de Souza Couto Computadores Digitais 2 Linguagens de Programação DEL-Poli/UFRJ Prof. Miguel Campista Tópicos Listas Encadeadas Introdução às listas encadeadas Manipulação de elementos Implementações recursivas Listas

Leia mais

PLANO DE UNIDADE DIDÁTICA- PUD

PLANO DE UNIDADE DIDÁTICA- PUD Professor: Marcus Vinícius Midena Ramos Coordenação: Ricardo Argenton Ramos Data: 03/08/2010 Página: 1 de 5 EMENTA: Conceitos básicos de linguagens. Histórico, classificação e principais aplicações de

Leia mais

Introdução à Análise e Projeto de Sistemas

Introdução à Análise e Projeto de Sistemas Introdução à I. O Que vamos fazer na Disciplina? Saber uma linguagem de programação orientada a objeto (OO) não é suficiente para criar sistemas OO Tem que saber Análise e Projeto OO (APOO) Isto é, Análise

Leia mais

Introdução. Por que desenvolver ALGORITMO?

Introdução. Por que desenvolver ALGORITMO? Introdução Programa Computacional busca da necessidade de solução de um problema particular: a geração automática de documentos, o controle de um equipamento eletrodoméstico, a transmissão de informações

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

Estrutura de Dados e Algoritmos e Programação e Computadores II. Aula 4: Listas Estáticas e Dinâmicas

Estrutura de Dados e Algoritmos e Programação e Computadores II. Aula 4: Listas Estáticas e Dinâmicas Estrutura de Dados e Algoritmos e Programação e Computadores II Aula 4: Listas Estáticas e Dinâmicas Listas Estáticas: com Vetores Dinâmicas: Listas Ligadas (com ponteiros) Variáveis e Métodos de Controle:

Leia mais

Programação Estruturada

Programação Estruturada Programação Estruturada Introdução à linguagem C Professores Emílio Francesquini e Carla Negri Lintzmayer 2018.Q3 Centro de Matemática, Computação e Cognição Universidade Federal do ABC Programação estruturada

Leia mais

POO29004 Programação Orientada a Objetos

POO29004 Programação Orientada a Objetos POO29004 Programação Orientada a Objetos Classe abstrata, interface e polimorfismo Prof. Emerson Ribeiro de Mello Instituto Federal de Santa Catarina IFSC campus São José mello@ifsc.edu.br http://docente.ifsc.edu.br/mello/poo

Leia mais

SEMÂNTICA. Rogério Rocha. rode = program simples = var x : int := 3 in x := x + 5 end.

SEMÂNTICA. Rogério Rocha. rode = program simples = var x : int := 3 in x := x + 5 end. SEMÂNTICA program simples = var x : int := 3 in x := x + 5 end. rode =? Rogério Rocha Roteiro Introdução Sintaxe Semântica Dinâmica (Métodos formais) Operacional Axiomática Denotacional Estática Conclusão

Leia mais

Desenvolvimento de Aplicações Desktop

Desenvolvimento de Aplicações Desktop Desenvolvimento de Aplicações Desktop Conceitos Básicos de Programação Professor: Charles Leite O Desenvolvimento de Programas A programação consiste em indicar como o computador (hardware) deve trabalhar

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 / 44 Breve revisão Conteúdo 1 Breve revisão 2 Mais sobre classes

Leia mais

Composição e Herança. carro meucarro = new carro();

Composição e Herança. carro meucarro = new carro(); Composição e Herança Um dos conceitos mais interessantes das linguagens orientadas a objeto é a reutilização de código. Mas para isso realmente funcionar, você tem que conseguir fazer mais do que simplesmente

Leia mais

UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO. Prof.ª Danielle Casillo

UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO. Prof.ª Danielle Casillo UNIVERSIDADE FEDERAL RURAL DO SEMI-ÁRIDO CURSO: CIÊNCIA DA COMPUTAÇÃO Prof.ª Danielle Casillo Diferentes computadores podem ter diferentes arquiteturas e os diversos tipos de linguagem de programação.

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

Aula 12 Tipo Abstrato de Dados. Prof. Me. Sérgio Carlos Portari Jr UEMG Campus de Frutal

Aula 12 Tipo Abstrato de Dados. Prof. Me. Sérgio Carlos Portari Jr UEMG Campus de Frutal Aula 12 Tipo Abstrato de Dados Prof. Me. Sérgio Carlos Portari Jr UEMG Campus de Frutal Representação dos Dados Os dados podem estar representados (estruturados) de diferentes maneiras Normalmente, a escolha

Leia mais

Aula 01 Algoritmos e lógica de programação e introdução ao C++

Aula 01 Algoritmos e lógica de programação e introdução ao C++ Aula 01 Algoritmos e lógica de programação e introdução ao C++ Autor: José Martins de Castro Neto Carga Horária: 2h 21 de julho de 2015 1 Algoritmo e lógica de programação Ementa do curso 1. Definições

Leia mais

Motivação. Estrutura de Dados. Motivação. Motivação. Por que estudar os tipos de dados? Duas são as principais preocupações em um projeto de software

Motivação. Estrutura de Dados. Motivação. Motivação. Por que estudar os tipos de dados? Duas são as principais preocupações em um projeto de software Estrutura de Dados Aula 01 -Tipos Abstratos de de Dados Prof. Ms. Luiz Alberto Contato: lasf.bel@gmail.com Motivação Por que estudar os tipos de dados? Duas são as principais preocupações em um projeto

Leia mais

Computação II Orientação a Objetos

Computação II Orientação a Objetos Computação II Orientação a Objetos Fabio Mascarenhas - 2016.2 http://www.dcc.ufrj.br/~fabiom/java Revisão Classes e Objetos Classes são uma das unidades básicas de um programa Java Usamos as classes para

Leia mais

Conceitos básicos de programação

Conceitos básicos de programação Constantes class Exemplo { static void Main() { float fahr, celsius; int lower, upper, step; lower = 0; /* limite inferior da tabela de temperaturas */ upper = 300; /* limite superior */ step = 20; /*

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

Programação Estruturada

Programação Estruturada Programação Estruturada Organização de um ambiente computacional Professores Emílio Francesquini e Carla Negri Lintzmayer 2018.Q3 Centro de Matemática, Computação e Cognição Universidade Federal do ABC

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

Linguagem de Programação C++

Linguagem de Programação C++ Exercício: Linguagem de Programação C++ Construa o diagrama de classes UML para as classes envolvidas na solução do exercício do slide 253. 267 Sobrecarga Linguagem de Programação C++ Neste exercício vimos

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

Linguagens de Programação

Linguagens de Programação Linguagens de Programação 128 13 129 Linguagens de Programação Uma linguagem de programação é um vocabulário e um conjunto de regras gramaticais usadas para escrever programas de computador. Esses programas

Leia mais

Introdução à Programação em C. Prof. Ricardo Teixeira Tecnologia em Mecatrônica Industrial SENAI

Introdução à Programação em C. Prof. Ricardo Teixeira Tecnologia em Mecatrônica Industrial SENAI Introdução à Programação em C Prof. Ricardo Teixeira Tecnologia em Mecatrônica Industrial SENAI Linguagem C Criada em 1972 para uso no LINUX; Sintaxe base para diversas outras (Java, JavaScript, PHP, C++,

Leia mais

LINGUAGEM C: COMANDOS DE REPETIÇÃO

LINGUAGEM C: COMANDOS DE REPETIÇÃO LINGUAGEM C: COMANDOS DE REPETIÇÃO Prof. André Backes ESTRUTURAS DE REPETIÇÃO Uma estrutura de repetição permite que uma sequência de comandos seja executada repetidamente, enquanto determinadas condições

Leia mais

Linguagem e Técnicas em Programação. Gilson de Souza Carvalho

Linguagem e Técnicas em Programação. Gilson de Souza Carvalho Gilson de Souza Carvalho gaucho.gilson@hotmail.com 3.1.3 Condições compostas Linguagem e Técnicas em Programação As condições que vimos até agora sempre foram únicas. Entretanto, conforme aumenta a complexidade

Leia mais

AULA 03: FUNCIONAMENTO DE UM COMPUTADOR

AULA 03: FUNCIONAMENTO DE UM COMPUTADOR ORGANIZAÇÃO E ARQUITETURA DE COMPUTADORES I AULA 03: FUNCIONAMENTO DE UM COMPUTADOR Prof. Max Santana Rolemberg Farias max.santana@univasf.edu.br Colegiado de Engenharia de Computação O QUE É UM COMPUTADOR?

Leia mais

Compiladores Ambiente de Execução

Compiladores Ambiente de Execução Compiladores Ambiente de Execução Fabio Mascarenhas 2015.1 http://www.dcc.ufrj.br/~fabiom/comp O Back-end Até agora vimos as fases do front-end do compilador: Análise Léxica Análise Sintática Análise Semântica

Leia mais

Programação Orientada a Objetos Relacionamentos entre classes

Programação Orientada a Objetos Relacionamentos entre classes Programação Orientada a Objetos Relacionamentos entre classes Prof. Vicente Paulo de Camargo RELACIONAMENTO ENTRE CLASSES Interface agregação Dependencia composição generalização associação RELACIONAMENTO

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

Conceitos de Programação Orientada a Objetos

Conceitos de Programação Orientada a Objetos Conceitos de Programação Orientada a Objetos flavio@facom.ufu.br 80 Por que a Orientação a Objetos? As abstrações podem corresponder às "coisas" do domínio do problema, facilitando o entendimento Esta

Leia mais

Ederson Luiz da Silva Ciência da Computação. Algoritmos e Programação

Ederson Luiz da Silva Ciência da Computação. Algoritmos e Programação Ederson Luiz da Silva Ciência da Computação Algoritmos e Programação Linguagem de programação Linguagem de Programação Linguagem de máquina http://www.assemblyprogressivo.net/p/curso.html Linguagem de

Leia mais

Linguagem de Programação I

Linguagem de Programação I Linguagem de Programação I Carlos Eduardo Ba6sta Centro de Informá6ca - UFPB bidu@ci.ufpb.br C++ e POO Fundamentação de Orientação a Objetos (OO) Sintaxe básica de C++ Modelagem de sistemas orientada a

Leia mais

Informática I. Aula 14. Aula 14-10/10/2007 1

Informática I. Aula 14.  Aula 14-10/10/2007 1 Informática I Aula 14 http://www.ic.uff.br/~bianca/informatica1/ Aula 14-10/10/2007 1 Ementa Noções Básicas de Computação (Hardware, Software e Internet) HTML e Páginas Web Internet e a Web Javascript

Leia mais

Introdução à orientação a objetos. João Tito Almeida Vianna 18/05/2013

Introdução à orientação a objetos. João Tito Almeida Vianna 18/05/2013 Introdução à orientação a objetos João Tito Almeida Vianna 18/05/2013 Roteiro Aula 1 Introdução: Programação estruturada x Orientação a objetos Orientação a objetos Classe e objeto Encapsulamento Herança

Leia mais

Tipos Abstratos de Dados

Tipos Abstratos de Dados Tipos Abstratos de Dados Prof. Túlio Toffolo http://www.toffolo.com.br BCC202 Aula 03 Algoritmos e Estruturas de Dados I Qual a diferença entre um algoritmo e um programa? Algoritmos e Estruturas de Dados

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 Programação Estruturada X Programação Orientada a Objetos Orientação a Objetos É um paradigma de programação de computadores

Leia mais

Conceitos de Programação Orientada por Objectos. Rui Camacho Programação 2

Conceitos de Programação Orientada por Objectos. Rui Camacho Programação 2 Conceitos de Programação Orientada por Objectos Um Problema Problema: Existem, hoje em dia, aplicações complexas e de grande dimensão que é preciso desenvolver e manter de modo eficiente utilizando equipas

Leia mais

Introdução e Conceitos

Introdução e Conceitos Introdução e Conceitos Aula 1 11/08/2017 diegoquirino@gmail.com 1 Agenda 1. Motivações: porque estudar linguagens de programação? 2. Breve Histórico sobre as Linguagens de Programação 3. Processos de Tradução

Leia mais

Algoritmos e Introdução à Programação. Lógica e Linguagem de Programação

Algoritmos e Introdução à Programação. Lógica e Linguagem de Programação Algoritmos e Introdução à Programação Lógica e Linguagem de Programação Prof. José Honorato Ferreira Nunes honoratonunes@softwarelivre.org http://softwarelivre.org/zenorato/honoratonunes Linguagem C Prof.

Leia mais

Introdução à Computação

Introdução à Computação Introdução à Computação Jordana Sarmenghi Salamon jssalamon@inf.ufes.br jordanasalamon@gmail.com http://inf.ufes.br/~jssalamon Departamento de Informática Universidade Federal do Espírito Santo Agenda

Leia mais

Organização de Computadores

Organização de Computadores Organização de Computadores Aula #5.1 EBS 111 ICC Prof. Luiz Fernando S. Coletta luizfsc@tupa.unesp.br Campus de Tupã Exercício 3 (correção) 1. Converta as sequências binárias em números de base 10: (a)

Leia mais

Comentários: Desenvolvimento de Sistemas Rogério Araújo

Comentários: Desenvolvimento de Sistemas Rogério Araújo Comentários: Desenvolvimento de Sistemas Rogério Araújo rgildoaraujo@gmail.com 1 Técnico de informática no Ministério Público Federal Professor da Equipe Itnerante Desenvolvimento de Sistemas Certificações

Leia mais

Programação: Compiladores x Interpretadores PROF. CARLOS SARMANHO JR

Programação: Compiladores x Interpretadores PROF. CARLOS SARMANHO JR Programação: Compiladores x Interpretadores PROF. CARLOS SARMANHO JR Introdução Compiladores e interpretadores são formas de tradução de um código geralmente de alto nível (escrito em uma linguagem de

Leia mais

UNIVERSIDADE DA BEIRA INTERIOR

UNIVERSIDADE DA BEIRA INTERIOR UNIVERSIDADE DA BEIRA INTERIOR Algoritmos e Estruturas de Dados - Bioengenharia 2º Semestre Frequência Resolução 19/maio/2015 A. [3.5 val] Algoritmos de ordenação e de pesquisa Considere-se as seguintes

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

BCC202 - Estrutura de Dados I

BCC202 - Estrutura de Dados I BCC202 - Estrutura de Dados I Aula 03: Tipos Abstratos de Dados (TADs) Reinaldo Fortes Universidade Federal de Ouro Preto, UFOP Departamento de Ciência da Computação, DECOM Website: www.decom.ufop.br/reifortes

Leia mais

Introdução à Programação

Introdução à Programação Introdução à Program João Manuel R. S. Tavares Sumário 1. Ciclo de desenvolvimento de um programa; 2. Descrição de algoritmos; 3. Desenvolvimento modular de programas; 4. Estruturas de controlo de um programa.

Leia mais