36
PROGRAMAÇÃO DE COMPUTADORES PROF. DR. EDNALDO P IZZOLATO

PROGRAMAÇÃO DE COMPUTADORES PROF. DR. EDNALDO PIZZOLATO

Embed Size (px)

Citation preview

PROGRAMAÇÃO D

E

COMPUTA

DORES

PROF.

DR. EDNALD

O PIZ

ZOLATO

HISTÓRICO METODOLOGIAS DE SOFTWARE

• Início Anos 70 - Programação Estruturada

Niklaus Wirth• Fim Anos 70 - Projeto Estruturado

Constantine, Yourdon• Anos 80 - Análise Estruturada

Yourdon/DeMarco, James Martim, Chris Gane

• Anos 90Orientação a ObjetosBaseado no paradigma estruturadoQualidade de Software UML Componentização

FASES NA 'FABRICAÇÃO' DE UM SOFTWARE

• Análise ou especificaçãoRequisitos, conceito do domínio

• ProjetoSolução lógica, representação da análise

• Programação, construção ou desenvolvimentoCódigo, representação em uma linguagem de programação;Delphi, C++, Java, Visual Basic, Cobol, etc

• Testes

ESTRUTURADA X ORIENTAÇÃO A OBJETOS

• Com a orientação a objetos procura-se eliminar as diferenças entre as etapas de análise, projeto e implementação, reabilitando a difamada tarefa de implementação;

• O segredo é fazer com que os conceitos de programação, e as notações para programação, sejam suficientemente de alto-nível para que possam servir apropriadamente como ferramentas de modelagem.

METODOLOGIA 'ESTRUTURADA'

Criada nos anos 60/70Guerra FriaGrandes ProjetosAmbientes de Grande PortePouca maturidade em Programação

Funciona!Quando é bem utilizada…Quando os projetos tem início, meio e fim…Quando os projetos são longos…Quando você tem legado de mainframe.

METODOLOGIA ‘ESTRUTURADA’

Tradicionalmente, a literatura tratava análise, projeto e implementação como atividades diferentes e, até certo ponto, desconexas pois tinham:•diferentes métodos;•diferentes notações; e•diferentes objetivos.Na necessidade de especificar o que está prestes a ser implementado tratavam a análise e o projeto como as únicas coisas que realmente interessam. A implementação seria apenas algo inevitável.

PARADIG

MA ESTR

UTURADO

X O

RIENTA

ÇÃO A O

BJETO

S

ESTRUTURADO X OO

• Na Estruturada Os sistemas são divididos em subprogramas;Fixa a atenção muito mais nos procedimentos que nos dados.

• Na Orientação a Objetos Dados e Procedimentos possuem a mesma importância;

ORIENTA

ÇÃO A O

BJETO

S

Altera a forma pela qual dados e procedimentos intercomunicam-se.

• Reutilização de Software (Reusibilidade)

reaproveitamento de código

• Manutenção de Software facilidade de manutenção de sistemas

• Tamanho de Código Gerado menor código

PARADIG

MA PROCED

URAL

Decida quais procedimentos você quer; utilize os melhores algoritmos que você encontrar

PARADIG

MA PROCED

URAL

Enfoque no processamento, i.e. no algoritmo necessário para executar uma computação desejada

PARADIG

MA PROCED

URAL

Linguagens oferecem facilidades para passar parâmetros para funções e retornar valores

PARADIG

MA PROCED

URAL

Funções são utilizadas para criar ordem em um algoritmo complicado

PROGRAMAÇÃO M

ODULAR

Mudança de enfoque: projeto de procedimentos -> organização de dados

PROGRAMAÇÃO M

ODULAR

Paradigma: um conjunto de procedimentos, juntamente com os dados que eles manipulam, é dito um módulo

ABSTRAÇÃO D

E DADOS

ABSTRAÇÃO DE DADOS

• “Tipos” criados por meio de módulos e diferentes de “tipos” embutidos na linguagem

• “tipos” embutidos permitem maior verificação e são mais simples

• Linguagens como ADA e C++ permitem a construção de tipos pelo usuário

PROBLEMAS COM ABSTRAÇÃO DE DADOS

• Um tipos de dados abstrato é uma caixa-preta; uma vez definida, ela não interage com o resto do programa

• Nao há suporte para adaptá-la a novos usos

• Inflexibilidade

ORIENTA

ÇÃO A O

BJETO

S

PARADIGMA DE ORIENTAÇÃO A OBJETOS

• Decida quais classes você deseja;

• Implemente as operações suportadas por cada

classe; e

• Torne explícitas as semelhanças por meio de

herança.

EVOLU

ÇÃO DA

PROGRAMAÇÃO

40 - alteração física de circuitos eletrônicos;

50 - linguagens montadoras (assembler), visão lógica;

60 - surgem as primeiras linguagens de alto nível;

70 – programação estruturada;

80 – Orientação a objetos

LINGUAGENS

Cada linguagem é indicada para determinada tarefa:Fortran, Pascal = Científica;Cobol = Economia;Prolog, Lisp = Inteligência Artificial;Clipper = Banco de dados;C e C++ = todas as áreas

Algol

1960 1965 1970 1975 1980 1985 1990 1995 2000| | | | | | | | |

Simula

Pascal

CPL

Smaltalk

Pascalobject

s

Delphi

Objective C

Java C#BCPL B

C C++ ANSIC++

ISOC++

| | | | | | | | |

ProgramaçãoEstruturada

ProjetoEstruturado

AnáliseEstruturada

Orientaçãoa objetos

Análise orientadaa objetos UML

AT&T BellAT&T Bell

Sun Microsoft

Borland

JAVA

JAVA

1991: Sun Microsystems Projeto Green

1995: Sun MicrosystemsAnunciada Formalmente

Páginas Web com conteúdo dinâmico e interativoAprimora funcionalidades de web serversPermite aplicações para:

Celulares, pagers, palms, …

BASIC E

VIS

UAL BASIC

BASIC E VISUAL BASIC

BASICBeginner’s All-Purpose Symbolic Instruction CodeAnos 60s: Prof. John Kemeny e Thomas Kurtz (Dartmouth College)

BASIC E VISUAL BASIC

Visual Basic1991

Resultado da interface gráfica do Microsoft Windows Graphical User Interface (GUI)

Final dos anos 80 e começo dos 90.

CaracterísticasGUI, event handling, acesso ao Win32 API, object-oriented programming, error handling

Visual Basic .NET

C E C

++

O C foi desenvolvido em 1972 por Dennis Ritchie -

para reescrever o UNIX

O C++ foi desenvolvido nos Laboratórios AT&T Bell

em 1980, por Bjarne Stroustrup.

O padrão ANSI (Instituto Nacional Americano de

Padrões) C++ foi aprovado em 1994;

O padrão ISO (Organização Internacional de Padrões)

em 1998

PODERES D

O C++

PODERES DO C++

C++ é superconjunto do C, e mantem-se fiel à característica do C de linguagem de pequeno tamanho, O C++ incluiu apenas algumas novas palavras reservadas às já existentes no C.

Linguagem versátil, concisa e relativamente de baixo nível;

Pequeno tamanho Poucos Comandos Manipulação a nível de Bits Eficiência na Manipulação de Memória Portabilidade

POR QUE C++

Linguagem padronizadaFaz em um SO e compila em qualquer outro

DOS, Windows, UNIX, OS/2, VAX,MacOS, etc

Java é interpretado, necessita de uma máquina virtual

Uso em SO com pouco recurso memória

PalmOS, Tecnologia WAP

POR QUE C++

Diversidade de aplicações

Aplicações simples

Implementação de SO

Criação de meta-classes

POR QUE C++?

Várias Bibliotecas disponibilizadas

Ex: QT – biblioteca GUI