33
PROGRAMAÇÃO ORIENTADA A OBJETOS I -CONCEITOS PRELIMINARES Prof. Angelo Augusto Frozza, M.Sc. http://about.me/TilFrozza

PROGRAMAÇÃO ORIENTADA A OBJETOS I …frozza/2014.1/BSI13/POOI-Aula001-Conceit... · PROGRAMAÇÃO ORIENTADA A OBJETOS Não é um paradigma no sentido estrito: é uma subclassificação

Embed Size (px)

Citation preview

Page 1: PROGRAMAÇÃO ORIENTADA A OBJETOS I …frozza/2014.1/BSI13/POOI-Aula001-Conceit... · PROGRAMAÇÃO ORIENTADA A OBJETOS Não é um paradigma no sentido estrito: é uma subclassificação

PROGRAMAÇÃOORIENTADA A OBJETOS I- CONCEITOS PRELIMINARESProf. Angelo Augusto Frozza, M.Sc.http://about.me/TilFrozza

Page 2: PROGRAMAÇÃO ORIENTADA A OBJETOS I …frozza/2014.1/BSI13/POOI-Aula001-Conceit... · PROGRAMAÇÃO ORIENTADA A OBJETOS Não é um paradigma no sentido estrito: é uma subclassificação

ROTEIRO

O que é programação

Linguagens de Programação

Paradigmas de Programação

História da POO

Prof. Reginaldo Rubens da Silva, M.Sc. Programação Orientada a Objetos I

Page 3: PROGRAMAÇÃO ORIENTADA A OBJETOS I …frozza/2014.1/BSI13/POOI-Aula001-Conceit... · PROGRAMAÇÃO ORIENTADA A OBJETOS Não é um paradigma no sentido estrito: é uma subclassificação

O QUE É PROGRAMAÇÃO

É o processo de escrita, teste e manutenção de umprograma de computador.

O programa é escrito em uma linguagem deprogramação, embora seja possível, com algumadificuldade, escrevê-lo diretamente em linguagem demáquina.

Prof. Reginaldo Rubens da Silva, M.Sc. Programação Orientada a Objetos I

Page 4: PROGRAMAÇÃO ORIENTADA A OBJETOS I …frozza/2014.1/BSI13/POOI-Aula001-Conceit... · PROGRAMAÇÃO ORIENTADA A OBJETOS Não é um paradigma no sentido estrito: é uma subclassificação

LINGUAGEM DE PROGRAMAÇÃO

Uma linguagem de programação é um métodopadronizado para expressar instruções para umcomputador.

É um conjunto de regras usadas para definir umprograma de computador.

Prof. Reginaldo Rubens da Silva, M.Sc. Programação Orientada a Objetos I

Page 5: PROGRAMAÇÃO ORIENTADA A OBJETOS I …frozza/2014.1/BSI13/POOI-Aula001-Conceit... · PROGRAMAÇÃO ORIENTADA A OBJETOS Não é um paradigma no sentido estrito: é uma subclassificação

LINGUAGEM DE PROGRAMAÇÃO

Uma linguagem permite que um programador especifiqueprecisamente: sobre quais dados um computador vai atuar; como estes dados serão armazenados ou transmitidos; e quais ações devem ser tomadas sob diversas circunstâncias.

Prof. Reginaldo Rubens da Silva, M.Sc. Programação Orientada a Objetos I

Page 6: PROGRAMAÇÃO ORIENTADA A OBJETOS I …frozza/2014.1/BSI13/POOI-Aula001-Conceit... · PROGRAMAÇÃO ORIENTADA A OBJETOS Não é um paradigma no sentido estrito: é uma subclassificação

LINGUAGEM DE PROGRAMAÇÃO

Linguagens de programação são classificadas em altonível e baixo nível.

Prof. Reginaldo Rubens da Silva, M.Sc. Programação Orientada a Objetos I

Page 7: PROGRAMAÇÃO ORIENTADA A OBJETOS I …frozza/2014.1/BSI13/POOI-Aula001-Conceit... · PROGRAMAÇÃO ORIENTADA A OBJETOS Não é um paradigma no sentido estrito: é uma subclassificação

LINGUAGENS DE ALTO NÍVEL

Se caracterizam por possuírem instruções ou comandosexpressos sintaticamente em inglês, ou seja, maispróximo de uma linguagem humana (por isso alto nível).

Prof. Reginaldo Rubens da Silva, M.Sc. Programação Orientada a Objetos I

Page 8: PROGRAMAÇÃO ORIENTADA A OBJETOS I …frozza/2014.1/BSI13/POOI-Aula001-Conceit... · PROGRAMAÇÃO ORIENTADA A OBJETOS Não é um paradigma no sentido estrito: é uma subclassificação

LINGUAGENS DE ALTO NÍVEL

Ao se utilizar uma linguagem de programação de altonível para desenvolver um programa, está se adquirindoprodutividade, pois ela permite expressar as intenções doprogramador mais facilmente do que quando comparadocom o uso de uma linguagem de máquina. Ex: Java, C, Pascal, Cobol etc.

Prof. Reginaldo Rubens da Silva, M.Sc. Programação Orientada a Objetos I

Page 9: PROGRAMAÇÃO ORIENTADA A OBJETOS I …frozza/2014.1/BSI13/POOI-Aula001-Conceit... · PROGRAMAÇÃO ORIENTADA A OBJETOS Não é um paradigma no sentido estrito: é uma subclassificação

LINGUAGENS DE BAIXO NÍVEL

São aquelas cujas instruções ou comandos seaproximam bastante da linguagem de máquina.

Normalmente, cada instrução nesta linguagemrepresenta uma instrução executada pelo processador.

Prof. Reginaldo Rubens da Silva, M.Sc. Programação Orientada a Objetos I

Page 10: PROGRAMAÇÃO ORIENTADA A OBJETOS I …frozza/2014.1/BSI13/POOI-Aula001-Conceit... · PROGRAMAÇÃO ORIENTADA A OBJETOS Não é um paradigma no sentido estrito: é uma subclassificação

LINGUAGENS DE BAIXO NÍVEL

A vantagem deste tipo de linguagem é a grandevelocidade de execução dos programas e o tamanho dosmesmos (que são mais compactos). Ex: Assembly

Prof. Reginaldo Rubens da Silva, M.Sc. Programação Orientada a Objetos I

Page 11: PROGRAMAÇÃO ORIENTADA A OBJETOS I …frozza/2014.1/BSI13/POOI-Aula001-Conceit... · PROGRAMAÇÃO ORIENTADA A OBJETOS Não é um paradigma no sentido estrito: é uma subclassificação

COMPILAÇÃO / INTERPRETAÇÃO

Uma linguagem de programação pode ser convertida emcódigo de máquina por compilação ou interpretação.

Prof. Reginaldo Rubens da Silva, M.Sc. Programação Orientada a Objetos I

Page 12: PROGRAMAÇÃO ORIENTADA A OBJETOS I …frozza/2014.1/BSI13/POOI-Aula001-Conceit... · PROGRAMAÇÃO ORIENTADA A OBJETOS Não é um paradigma no sentido estrito: é uma subclassificação

COMPILAÇÃO

Se o método utilizado traduz o código do programa(instruções que compõem o programa) para o código demáquina e só depois o programa pode ser executado,diz-se que o programa foi compilado.

A ferramenta utilizada para realizar esta tradução échamada compilador.

Prof. Reginaldo Rubens da Silva, M.Sc. Programação Orientada a Objetos I

Page 13: PROGRAMAÇÃO ORIENTADA A OBJETOS I …frozza/2014.1/BSI13/POOI-Aula001-Conceit... · PROGRAMAÇÃO ORIENTADA A OBJETOS Não é um paradigma no sentido estrito: é uma subclassificação

COMPILAÇÃO

Quando se utiliza a compilação, é gerado um arquivocom a extensão .EXE (*), que pode ser executado umnúmero indefinido de vezes sem que seja necessáriauma nova compilação.

Linguagens como Pascal e C utilizam-se da compilação.

Prof. Reginaldo Rubens da Silva, M.Sc. Programação Orientada a Objetos I

Page 14: PROGRAMAÇÃO ORIENTADA A OBJETOS I …frozza/2014.1/BSI13/POOI-Aula001-Conceit... · PROGRAMAÇÃO ORIENTADA A OBJETOS Não é um paradigma no sentido estrito: é uma subclassificação

INTERPRETAÇÃO

Se o código do programa é traduzido à medida em quevai sendo executado, em um processo de tradução detrechos seguidos de uma execução imediata, então diz-se que o programa foi interpretado e que o mecanismoutilizado para a tradução é um interpretador.

Prof. Reginaldo Rubens da Silva, M.Sc. Programação Orientada a Objetos I

Page 15: PROGRAMAÇÃO ORIENTADA A OBJETOS I …frozza/2014.1/BSI13/POOI-Aula001-Conceit... · PROGRAMAÇÃO ORIENTADA A OBJETOS Não é um paradigma no sentido estrito: é uma subclassificação

INTERPRETAÇÃO

Programas interpretados geralmente são mais lentos doque os compilados.

A cada nova execução do programa, é necessária umanova tradução do código-fonte para código de máquina.

Linguagens como PHP, JavaScript, Perl e Pythonutilizam este método de tradução.

Prof. Reginaldo Rubens da Silva, M.Sc. Programação Orientada a Objetos I

Page 16: PROGRAMAÇÃO ORIENTADA A OBJETOS I …frozza/2014.1/BSI13/POOI-Aula001-Conceit... · PROGRAMAÇÃO ORIENTADA A OBJETOS Não é um paradigma no sentido estrito: é uma subclassificação

PARADIGMAS DE PROGRAMAÇÃO

Modelo, padrão ou estilo de programação suportado porlinguagens que agrupam certas características comuns.

Prof. Reginaldo Rubens da Silva, M.Sc. Programação Orientada a Objetos I

Page 17: PROGRAMAÇÃO ORIENTADA A OBJETOS I …frozza/2014.1/BSI13/POOI-Aula001-Conceit... · PROGRAMAÇÃO ORIENTADA A OBJETOS Não é um paradigma no sentido estrito: é uma subclassificação

PARADIGMAS DE PROGRAMAÇÃO

Programação Imperativa

Programação Orientada a Objetos

Programação Funcional

Programação em Lógica

Prof. Reginaldo Rubens da Silva, M.Sc. Programação Orientada a Objetos I

Page 18: PROGRAMAÇÃO ORIENTADA A OBJETOS I …frozza/2014.1/BSI13/POOI-Aula001-Conceit... · PROGRAMAÇÃO ORIENTADA A OBJETOS Não é um paradigma no sentido estrito: é uma subclassificação

PROGRAMAÇÃO IMPERATIVA

Programas centrados no conceito de um estado(modelado por variáveis) e ações (comandos) quemanipulam o estado.

Paradigma também denominado de procedural, porincluir subrotinas ou procedimentos como mecanismo deestruturação.

Primeiro paradigma a surgir e ainda é o dominante.

Prof. Reginaldo Rubens da Silva, M.Sc. Programação Orientada a Objetos I

Page 19: PROGRAMAÇÃO ORIENTADA A OBJETOS I …frozza/2014.1/BSI13/POOI-Aula001-Conceit... · PROGRAMAÇÃO ORIENTADA A OBJETOS Não é um paradigma no sentido estrito: é uma subclassificação

PROGRAMAÇÃO IMPERATIVA

C, Pascal, Fortran e Basic são exemplos de linguagensque se enquadram no paradigma da programaçãoimperativa.

Prof. Reginaldo Rubens da Silva, M.Sc. Programação Orientada a Objetos I

Page 20: PROGRAMAÇÃO ORIENTADA A OBJETOS I …frozza/2014.1/BSI13/POOI-Aula001-Conceit... · PROGRAMAÇÃO ORIENTADA A OBJETOS Não é um paradigma no sentido estrito: é uma subclassificação

PROGRAMAÇÃO IMPERATIVA

Prof. Reginaldo Rubens da Silva, M.Sc. Programação Orientada a Objetos I

Page 21: PROGRAMAÇÃO ORIENTADA A OBJETOS I …frozza/2014.1/BSI13/POOI-Aula001-Conceit... · PROGRAMAÇÃO ORIENTADA A OBJETOS Não é um paradigma no sentido estrito: é uma subclassificação

PROGRAMAÇÃO IMPERATIVA

Vantagens: Eficiência (embute modelo de Von Neumann) Modelagem “natural” de aplicações do mundo real Paradigma dominante e bem estabelecido

Problemas: Relacionamento indireto entre E/S resulta em:

difícil legibilidade erros introduzidos durante manutenção descrições demasiadamente operacionais focalizam o como e não o

que

Prof. Reginaldo Rubens da Silva, M.Sc. Programação Orientada a Objetos I

Page 22: PROGRAMAÇÃO ORIENTADA A OBJETOS I …frozza/2014.1/BSI13/POOI-Aula001-Conceit... · PROGRAMAÇÃO ORIENTADA A OBJETOS Não é um paradigma no sentido estrito: é uma subclassificação

PROGRAMAÇÃO ORIENTADA A OBJETOS

Não é um paradigma no sentido estrito: é umasubclassificação do imperativo.

A diferença é mais de metodologia quanto à concepção emodelagem do sistema.

A grosso modo, uma aplicação é estruturada em módulos(classes) que agrupam um estado e operações(métodos) sobre este.

Classes podem ser estendidas ou usadas como tipos dedados (cujos elementos são os objetos).

Prof. Reginaldo Rubens da Silva, M.Sc. Programação Orientada a Objetos I

Page 23: PROGRAMAÇÃO ORIENTADA A OBJETOS I …frozza/2014.1/BSI13/POOI-Aula001-Conceit... · PROGRAMAÇÃO ORIENTADA A OBJETOS Não é um paradigma no sentido estrito: é uma subclassificação

PROGRAMAÇÃO ORIENTADA A OBJETOS

Prof. Reginaldo Rubens da Silva, M.Sc. Programação Orientada a Objetos I

Page 24: PROGRAMAÇÃO ORIENTADA A OBJETOS I …frozza/2014.1/BSI13/POOI-Aula001-Conceit... · PROGRAMAÇÃO ORIENTADA A OBJETOS Não é um paradigma no sentido estrito: é uma subclassificação

PROGRAMAÇÃO ORIENTADA A OBJETOS

Vantagens: Todas as do estilo imperativo Classes estimulam projeto centrado em dados: modularidade,

reusabilidade e extensibilidade Aceitação comercial crescente

Problemas: Semelhantes às do paradigma imperativo, mas amenizadas

pelas facilidades de estruturação.

Prof. Reginaldo Rubens da Silva, M.Sc. Programação Orientada a Objetos I

Page 25: PROGRAMAÇÃO ORIENTADA A OBJETOS I …frozza/2014.1/BSI13/POOI-Aula001-Conceit... · PROGRAMAÇÃO ORIENTADA A OBJETOS Não é um paradigma no sentido estrito: é uma subclassificação

PROGRAMAÇÃO ORIENTADA A OBJETOS

Linguagens como SmallTalk, C++, Java e Object Pascal,são exemplos das que se enquadram no paradigma daprogramação orientada a objetos.

Prof. Reginaldo Rubens da Silva, M.Sc. Programação Orientada a Objetos I

Page 26: PROGRAMAÇÃO ORIENTADA A OBJETOS I …frozza/2014.1/BSI13/POOI-Aula001-Conceit... · PROGRAMAÇÃO ORIENTADA A OBJETOS Não é um paradigma no sentido estrito: é uma subclassificação

PROGRAMAÇÃO FUNCIONAL

Programas são funções que descrevem uma relaçãoexplícita e precisa entre E/S.

Estilo declarativo: não há o conceito de estado nemcomandos como atribuição.

Conceitos sofisticados como polimorfismo, funções dealta ordem e avaliação sob demanda.

Aplicação: prototipação em geral e IA.

Ex.: Scheme

Prof. Reginaldo Rubens da Silva, M.Sc. Programação Orientada a Objetos I

Page 27: PROGRAMAÇÃO ORIENTADA A OBJETOS I …frozza/2014.1/BSI13/POOI-Aula001-Conceit... · PROGRAMAÇÃO ORIENTADA A OBJETOS Não é um paradigma no sentido estrito: é uma subclassificação

PROGRAMAÇÃO FUNCIONAL

Prof. Reginaldo Rubens da Silva, M.Sc. Programação Orientada a Objetos I

Page 28: PROGRAMAÇÃO ORIENTADA A OBJETOS I …frozza/2014.1/BSI13/POOI-Aula001-Conceit... · PROGRAMAÇÃO ORIENTADA A OBJETOS Não é um paradigma no sentido estrito: é uma subclassificação

PROGRAMAÇÃO FUNCIONAL

Vantagens: Manipulação de programas mais simples:

Prova de propriedades Transformação (exemplo: otimização)

Concorrência explorada de forma natural

Problemas: “O mundo não é funcional!” Implementações ineficientes Mecanismos primitivos de E/S e formatação

Prof. Reginaldo Rubens da Silva, M.Sc. Programação Orientada a Objetos I

Page 29: PROGRAMAÇÃO ORIENTADA A OBJETOS I …frozza/2014.1/BSI13/POOI-Aula001-Conceit... · PROGRAMAÇÃO ORIENTADA A OBJETOS Não é um paradigma no sentido estrito: é uma subclassificação

PROGRAMAÇÃO EM LÓGICA

Programas são relações entre E/S.

Estilo declarativo, como no paradigma funcional.

Na prática, inclui características imperativas, por questão de eficiência.

Aplicações: sistemas especialistas e banco de dados.

Ex.: Prolog, Lisp

Prof. Reginaldo Rubens da Silva, M.Sc. Programação Orientada a Objetos I

Page 30: PROGRAMAÇÃO ORIENTADA A OBJETOS I …frozza/2014.1/BSI13/POOI-Aula001-Conceit... · PROGRAMAÇÃO ORIENTADA A OBJETOS Não é um paradigma no sentido estrito: é uma subclassificação

PROGRAMAÇÃO EM LÓGICA

Prof. Reginaldo Rubens da Silva, M.Sc. Programação Orientada a Objetos I

Page 31: PROGRAMAÇÃO ORIENTADA A OBJETOS I …frozza/2014.1/BSI13/POOI-Aula001-Conceit... · PROGRAMAÇÃO ORIENTADA A OBJETOS Não é um paradigma no sentido estrito: é uma subclassificação

PROGRAMAÇÃO EM LÓGICA

Vantagens: Em princípio, todas do paradigma funcional. Permite concepção da aplicação em um alto nível de

abstração (através de associações entre E/S).

Problemas: Em princípio, todos do paradigma funcional. Linguagens usualmente não possuem tipos, nem são de alta

ordem.

Prof. Reginaldo Rubens da Silva, M.Sc. Programação Orientada a Objetos I

Page 32: PROGRAMAÇÃO ORIENTADA A OBJETOS I …frozza/2014.1/BSI13/POOI-Aula001-Conceit... · PROGRAMAÇÃO ORIENTADA A OBJETOS Não é um paradigma no sentido estrito: é uma subclassificação

HISTÓRICO DA POO

O termo Programação Orientada a Objetos foi criado porAlan Kay, autor da linguagem de programação Smalltalk,desenvolvida na década de 70 nos laboratórios da Xerox.

Mas, mesmo antes da criação do Smalltalk, algumas dasidéias da POO já eram aplicadas, sendo que a primeiralinguagem a realmente utilizar estas idéias foi alinguagem Simula 67, criada por Ole Johan Dahl eKristen Nygaard em 1967.

Prof. Reginaldo Rubens da Silva, M.Sc. Programação Orientada a Objetos I

Page 33: PROGRAMAÇÃO ORIENTADA A OBJETOS I …frozza/2014.1/BSI13/POOI-Aula001-Conceit... · PROGRAMAÇÃO ORIENTADA A OBJETOS Não é um paradigma no sentido estrito: é uma subclassificação

DÚVIDAS?

Prof. Angelo Augusto Frozza, M.Sc.

[email protected]

http://www.ifc-camboriu.edu.br/~frozza

@TilFrozzahttp://www.twitter.com/TilFrozza

http://about.me/TilFrozza