Orientação a Objetos. Programação em C++

Documentos relacionados
Fundamentos de Programação 1

Fundamentos de Programação1

Orientação a Objetos. Programação em C++

Orientação a Objetos. Programação em C++

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

Histórico de Linguagens de Programação

Fundamentos de Programação 1

Paradigmas de Linguagens Computacionais (PLC) (Apresentação da disciplina)

PLANO DE UNIDADE DIDÁTICA- PUD

Programação Orientada a Objetos em Python

DELEGAÇÃO REGIONAL DO ALENTEJO CENTRO DE FORMAÇÃO PROFISSIONAL DE ÉVORA REFLEXÃO 5

Ministério da Educação UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ. Campus Curitiba PLANO DE ENSINO

Computação 2. Aula 6B. Profª. Fabiany Vetor de Estruturas (structs)

Programação Orientada a Objetos

Computação 2. Aula 5. Diego Addan Estrutura de Dados Registros (structs)

PROGRAMAÇÃO ORIENTADA A OBJETOS I -CONCEITOS PRELIMINARES. Prof. Angelo Augusto Frozza, M.Sc.

PLANO DE ENSINO CURSO: BACHARELADO EM CIÊNCIA DA COMPUTAÇÃO

Ministério da Educação UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ. Campus Curitiba PLANO DE ENSINO

Disciplina de Linguagem de Programação e Aplicações [ Eng. Elétrica / Automação ]

USP - ICMC - SSC SSC o. Semestre Disciplina de Linguagem de Programação e Aplicações [ Eng. Elétrica / Automação ]

3. Linguagem de Programação C

Orientação a Objetos (OO)

Conceitos Básicos de C

DISCIPLINA: Programação de Computadores II

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

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

Programação Estruturada Aula Plano de Disciplina

Paradigmas de análise e desenvolvimento de sistemas. Principais Paradigmas

MCTA028 Programação Estruturada Aula 01: - Introdução à linguagem C - Teste de avaliação

IV. CONTEÚDO PROGRAMÁTICO

UNIVERSIDADE PRESBITERIANA MACKENZIE

Plano de Aula - Lógica de Programação - cód Horas/Aula

Profª. Juliana Pinheiro Campos ENG10082 Programação II Créditos: Prof. Gustavo Willam Pereira e Prof.

Paradigmas de Linguagens

Programação Estruturada Orientada a Objetos

CONTEÚDOS PROGRAMÁTICOS

MCTA028 Programação Estruturada Aula 01: - Introdução à linguagem C - Teste de avaliação

Fundamentos de Programação

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

Programa Analítico. Introdução. Origens da programação Orientada a Objetos. Paradigma procedural. Paradigma Orientado a Objetos.

Introdução. Parte 01. Desenvolvimento de Programação Orientada a Objetos. Prof. Pedro Neto

INF01202 Turmas A e B 2008/2 SÚMULA

Introdução e Conceitos

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

Fundamentos de Programação 1

PCS3111. Laboratório de Programação Orientada a Objetos para Engenharia Elétrica. Aula 1: Visão Geral

Programação Estruturada

Introdução à UML. Universidade Federal de Mato Grosso do Sul Sistemas de Informação - CPCX. Prof. Fernando Maia da Mota

Programa Analítico de Disciplina INF101 Introdução à Programação II

Programação em Sistemas Computacionais

PLANO DE ENSINO CURSO: TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS. DISCIPLINA: Programação Orientada a Objetos

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

CONCEITOS DE LINGUAGENS DE PROGRAMAÇÃO

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

Ministério da Educação UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ. Campus Curitiba PLANO DE ENSINO

Carga Horária: 60 h Créditos: 3 Pré-requisito: Não se aplica Professor(a): A definir Matricula: A definir Titulação: A definir

Programação de Computadores

Programação Orientada a Objeto: Introdução. Professor: Adonai Estrela Medrado Data: 22/07/2008

Modelo de plano analitico

LINGUAGENS DE PROGRAMAÇÃO PROGRAMA E BIBLIOGRAFIA

Licenciatura em Informática

CIÊNCIA DA COMPUTAÇÃO - LINGUAGEM DE PROGRAMAÇÃO II REVISÃO POO

Introdução a orientação a objetos

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

SUBGERÊNCIA DE GESTÃO EDUCACIONAL PLANO DE CURSO

Linguagem de Programação. Thiago Leite Francisco Barretto

Ministério da Educação UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ. Campus Curitiba PLANO DE ENSINO

USP - ICMC - SSC SSC o. Semestre Disciplina de Introdução à Computação para Engenharia Ambiental

Programação de Computadores I Introdução ao C PROFESSORA CINTIA CAETANO

Paradigmas. Fortran, Algol, Algol-68, Pascal, C, Cobol, PL/I

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

Informática I. Aula 19. Aula 19-31/10/2007 1

Programação por Objectos Introdução. Introdução 1/18

Slides trabalhados durante a quinta aula

Ministério da Educação UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ. Campus Curitiba PLANO DE ENSINO

Proposta de Trabalho de Conclusão de Curso

INF1013 MODELAGEM DE SOFTWARE

Universidade Estadual de Mato Grosso do Sul Ciência da Computação Algoritmos e Estruturas de Dados I (AED-I) Prof. Nilton

Computação 2. Aula Profª. Fabiany Listas Duplamente Encadeadas

PONTIFÍCIA UNIVERSIDADE CATÓLICA DE GOIÁS PRÓ-REITORIA DE GRADUAÇÃO ESCOLA DE CIÊNCIAS EXATAS E DA COMPUTAÇÃO PLANO DE ENSINO

FUNDAÇÃO UNIVERSIDADE FEDERAL DO VALE DO SÃO FRANCISCO

Orientação a Objetos. Programação em C++

MINISTÉRIO DA EDUCAÇÃO CENTRO FEDERAL DE EDUCAÇÃO TECNOLÓGICA DE MINAS GERAIS DIRETORIA DE GRADUAÇÃO

Reinaldo Gomes Análise/projeto estruturado

# Estrutura de Dados # Aula - Revisão de C/C++ na Prática. Prof. Leinylson Fontinele Pereira

Anual Obrigatória X Semestral X Opcional. Regime Diurno Nocturno Horas/semana T Teórica 2 Ano 1 1 T/P Teórico/Prática 4 Semestre 1 1 P- Prática

DISCIPLINA: Programação de Computadores I

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

Documento de uso exclusivo da unidade, não possui valor legal. 28/06/ :43:00. Matéria: Carga Horária Total. Prática: 44 Campo: 44

Programação Estruturada Aula - Introdução a Linguagem C

Transcrição:

Engenharia Eletrônica Orientação a Objetos - Programação em C++ 1 o Conjunto de Slides A : o Conteúdo da Disciplina, Importância Sistêmica desta, e a Introdução à OO/C++. Prof. Jean Marcelo SIMÃO - DAELN/UTFPR Aluno Monitor: Vagner Vengue (slides 6 e 7) 1

Evolução dos paradigmas Machine Language Assembly FORTRAN C Procedural LISP Functional SIMULA Smalltalk C++ Java Object Oriented PROLOG Logic Emergent 1950 1960 1970 1980 1990 2000 Fonte: Banaszewski, 2009

O que é um paradigma? Em ciências de forma geral Segundo Thomas Kuhn: Um determinado modelo que, durante um período maior ou menor de tempo e de forma mais ou menos explícita, orienta o desenvolvimento de uma pesquisa. Em ciência da computação Segundo Peter Van Roy: Um sistema formal que define como a programação é realizada. Cada paradigma possui seu próprio conjunto de técnicas e formas de estruturar o pensamento na composição de software.

Paradigmas de Programação Atuais Fonte: Van Roy, 2009

Paradigmas de Programação Atuais Paradigma de Programação Paradigma Imperativo Paradigma Declarativo Paradigma Procedimental Paradigma Orientado a Objetos Paradigma Funcional Paradigma Lógico Programação Orientada a Eventos Programação Baseada em Regras

Linguagens de Programação Uma grande diversidade de linguagens de programação Cobol Prolog... Lisp Pascal Clipper... Object Pascal C C++ Java Smalltalk... 6

Tipos de Linguagens de Programação e.g. Linguagens Declarativas (como o Prolog e mesmo LISP) Linguagem de Alto Nível: (e.g. C++, Object Pascal,...) Linguagem de Baixo Nível: Linguagem Montadora (Assembler) (e.g. C, Pascal,...) 7

Paradigmas Imperativos de Linguagem de Programação Tipos Procedimental OO Exemplos C, Pascal, C++, Object Pascal, 8

Orientação a Objetos (OO) - O que é a Orientação a Objetos (OO)? - É um paradigma ( modelo genérico, conjunto de idéias) para o projeto e implementação de softwares, tal como o paradigma procedimental o é. - No que concerne a implementação de software, existem linguagens de programação que suportam ( naturalmente ) este paradigma, sublinhando aqui o C++. - Neste contexto, um objeto pode ser entendido como um módulo (coeso) do software. 9

OO - Vantagens - Paradigma atual mais utilizado no desenvolvimento de novos softwares. - Mais fácil de representar a solução pretendida. - Apresenta uma maneira mais simples de modelar o software, buscando-se identificar os objetos da realidade onde ele será inserido. - Redução no custo de manutenção. - Quando é necessário fazer alterações no software, modifica-se apenas os objetos envolvidos. Como conseqüência, o software tende a ter um ciclo de vida mais longo. - Aumento de reutilização de código. - Um método (i.e., uma operação) de um objeto pode ser acessado por outros objetos que o agreguem, além disso, diferentes objetos podem compartilhar os mesmos métodos. 10

OO - Vantagens - Aumento de segurança de sistemas. - Cada objeto encapsula o seus dados, permitindo que os outros objetos acessem apenas os seus membros (atributos e métodos) que forem permitidos. Ou seja, cada objeto deve ser responsável pelo seu estado interno. - Melhor interação entres as fazes de projeto. - Permite a mesma abordagem desde a fase de levantamento de requisitos (ou necessidade) até a efetiva implementação. - Técnicas mais avançadas de documentação, que permitem representar aspectos estruturais e comportamentais dos objetos. - Torna o trabalho em equipe mais produtivo. -Pois os integrantes não precisam conhecer todos os detalhes de implementação de cada objeto, que pode representar até subsistemas inteiros. 11

Origens da OO e C++ OO - Kristen Nygaard e Ole-Johan Dahl (1962-1967). Centro Norueguês de Computação. Linguagem Simula 67. http://pt.wikipedia.org/wiki/simula OO - Alan Kay e Equipe (~1971). Xerox (Palo Alto USA). Linguagem Smalltalk. http://pt.wikipedia.org/wiki/smalltalk C++ - Bjarne Stroustrup (1983) Bell Labs (USA) http://pt.wikipedia.org/wiki/c++ Outras referências (informais por assim dizer): Wikipedia http://pt.wikipedia.org/wiki/orienta%c3%a7%c3%a3o_a_objetos Blog Webgoal http://www.webgoal.com.br/desenvolvimento/origem-da-orientacao-a-objetos Obs.: Sítios (sites) visitados em 01/03/2009. 12

Por que C/C++? Vocês aprenderam a linguagem C......e aprenderão C++ nesta disciplina. De certa forma, a linguagem C++ é......uma evolução da linguagem C... que comporta (em geral) a linguagem C procedimental... bem como uma nova sintaxe orientada a objetos Mas......por que C/C++? 13

Linguagem C Dennis Ritchie e Ken Thompson, anos 70 Linguagem clássica Uma linguagem difundida: Amplamente utilizada... Uma linguagem veterana... Sintaxe difundida, servindo como inspirações tecnológicas. Características Uma linguagem multinível: Permite compor programas com abordagens variando entre baixo e alto nível. Organização: Funções e estruturas de dados. Divisão de código fontes em (diversos arquivos (.h e.c). Flexibilidade Ponteiros: Permite a independência de memória préalocada. É uma linguagem importantíssima para Eng. Eletrônica e Eng. da Computação que tendem a trabalhar com sistemas de forte intimidade eletrônico-computacional (e.g. para fins de otimizações e economias de memória) como sistemas embarcados. 14

Exemplo de um Código em C /* Arquivo PESSOA.H */ struct Pessoa { int dia; int mes; int ano; int idade; }; int Calc_Idade ( struct Pessoa p, int ano ); /* Arquivo PESSOA.C */ #include PESSOA.h int Calc_Idade ( struct Pessoa p, int ano ) { int idd = ano - p.ano; } return idd; /* Arquivo MAIN.C */ #include <stdio.h> #include PESSOA.h void main() { struct Pessoa Einstein, Newton; } Einstein.dia = 14; Einstein.mes = 3; Einstein.ano = 1879; Newton.dia = 4; Newton.mes = 1; Newton.ano = 1643; Einstein.idade = Calc_Idade ( Einstein, 2007 ); Newton.idade = Calc_Idade ( Newton, 2007 ); printf("a idade de Einstein seria %d \n", Einstein.idade); printf("a idade de Newton seria %d \n", Newton.idade); getchar(); Exemplo de um projeto com três arquivos em Linguagem C. 15

Linguagem C Devido a sua flexibilidade de utilização, ela pode ser considerada como complicada: Uma alternativa é o uso de outras linguagens menos flexíveis, i.e. especializada para a aplicação em questão. Características Entretanto, o fato é que compreender C, com suas flexibilidades, permite compreender outras linguagens. Paradigma imperativo-procedimental: O paradigma procedimental é menos rico que o paradigma orientado a objetos (OO). Uma alternativa a linguagem C, seria uma linguagem OO, em particular a linguagem C++. Pode-se dizer que a linguagem C++ é uma evolução da linguagem C... C C++ 16

Linguagem C++ Bjarne Stroustrup, anos 80 Comporta a linguagem C. C++ C Características Comporta (a maioria dos) conceitos de programação OO, com suas vantagens. OO C++ Uma linguagem híbrida. Ling. OO C++ Linguagem Procedimental C++ : Uma linguagem flexível 17

Linguagem C++ e OO Elementares: Classe Objetos. Conceitos da OO Suportados Herança. Agregação. Polimorfismo A Orientação a Objetos (OO) permite, por exemplo, uma melhor organização e reaproveitamento de código. 18

Questões sistêmicas C/C++ Suporte Tecnológico ao C/C++ As linguagens C/C++ são suportada por diversos ambientes/tecnologias, por exemplo: Borland C++. C++ Builder da Borland. Microsoft Visual C++. Microsoft Visual C++.Net Microsoft Visual C++.Net (Express Edition) G++ Dev C++ Influência Tecnológicas do C/C++ Exemplos de Tecnologias Influenciadas: MatLab. Java. C#. 19

Questões sistêmicas C/C++ C++ e a Engenharia de Software Ciclo Clássico da Engenharia de Software Levantamento de Requisitos (ou Necessidades) Análise e Projeto Implementação (ou Codificação) Testes C ++ / OO Orientação a Objetos (OO) 20

Questões sistêmicas C/C++ A engenharia de software se compõe de várias etapas, como análise requisitos, projeto, implementação e testes. Para o projeto existe uma Linguagem de Projeto Orientada a Objetos (OO) chamada UML (Unified Modeling Language). Suporte da Engenharia de Software ao C++ Os conceitos da UML são, em geral, suportados pelo C++. A maioria das ferramentas voltadas ao projeto e implementação (as Ferramentas C.A.S.E.) suportam UML, C++ e linguagens similares (Java e C#). A maioria das Ferramentas C.A.S.E (Computer Aided Software/System Engineering) suportam certa geração de código (em C++) a partir de diagramas UML. Alguns exemplos de Ferramentas C.A.S.E. são: System Architect, Mega, Rational Rose e Star UML. 21

Conclusão C/C++ constitui: Uma tecnologia amplamente utilizada. Uma tecnologia clássica. Uma tecnologia flexível. C/C++ apresenta influências em desenvolvimentos tecnológicos e tem suporte tecnológico. C/C++ é uma tecnologia viva. C/C++ é uma tecnologia importante. 22

Conteúdos Estudados da Linguagem C Elementos Básicos da Linguagem C/C++ - Identificadores - Operadores Aritméticos, Lógicos e Relacionais - Comandos de Entra/Saída Estruturas de Decisão - Simples (if) - Composta (if-else) - Múltipla (switch) Estruturas de Repetição - Com teste no início (while) - Com teste no final (do while) - Com variável de controle (for) Estruturas de Dados Homogêneas - Vetores - Matrizes - Acesso dinâmico (ponteiros) Estruturas de Dados Heterogêneas - Registros de tamanho fixo (struct) - Registros de tamanho variável (union) - Acesso Dinâmico a estruturas Funções / Procedimentos - Passagem de parâmetro por valor - Passagem de parâmetro por referência - Retorno de valor Arquivos Estruturas de Dados - Listas (encadeadas, duplamente encadeadas)... Recursividade......... 23

Conteúdo de C++ a ser estudado Estruturas-Objetos - Atributos - Métodos... Classe-Objetos - Atributos - Métodos - Construtores - Destrutores - Privacidade (Private, Protected, Public)... Relacionamentos - Relacionamentos comuns - Agregação -Herança Conceito Avançados - Sobrecarga de método - Sobrecarga de operador - Classe Abstrata - Polimorfismo - Herança múltipla... Fund. 2 Dentre outros... vide planejamento da disciplina. 24

Bibliografia Schildt H. C Completo e Total. 3 ed.. Makron Books, 1996. ISBN 85-346-0595-5. C Kernighan B. W., Ritchie D. M. The C Programming Language, 1978. Prentice-Hall. ISBN 0-13-110163-3 (Edição Brasileira: A linguagem de programação C. Editora Campus. 1986). C++ Deitel H. M., Deitel, P. J. "C++ Como Programar". 3 a Bookman, 2001. Edição Lippman S. B., Lajoie J. C++ Primer. 3 a ed.: Addison-Wesley, 1998. ISBN 0-201-88954-4. Stroustrup B. C++ Programming Language. The Special Edition, Addison- Wesley (Pear), 2000. ISBN 0-201-54848-8. 25

Sítio (ou site) da Disciplina http://www.pessoal.utfpr.edu.br/jeansimao/fundamentos2/fundamentos2.htm http://www.pessoal.utfpr.edu.br/jeansimao/index.htm 26