Buscar

Conceitos Básicos

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 44 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 44 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 44 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

Programação Orientada por Objetos:
Conceitos Básicos
Utiliza parcialmente material dos professores Hugo Bastos e João Caram
Modelo OO (Orientação a Objetos) 
• A Orientação a Objetos abstrai o mundo real utilizando
objetos que interagem entre si.
• Utiliza o princípio da decomposibilidade para
desenvolver sistemas modulares, onde módulos são
unidades independentes que implementam uma
funcionalidade específica e se intercomunicam.
• Melhora a reusabilidade e extensibilidade dos softwares.
Modelo OO
• Uma aplicação OO é composta por diferentes objetos e
uma sequência de ações (interações).
• Uma ação se inicia através do envio de uma mensagem
para um agente (um objeto) que será responsável por
tratar essa ação.
• A mensagem carrega uma requisição, além de toda a
informação necessária (argumentos) para que a ação
seja executada.
• Se o agente receptor da mensagem a aceita, ele tem a
responsabilidade de executar um método para cumprir a
requisição.
O modelo de Objetos
Análise Orientada para Objetos (OOA):
Método de análise que examina os requisitos de um sistema de uma
perspectiva de classes e objetos, encontrados no vocabulário o domínio
do problema.
Projeto Orientada para Objetos (OOD):
Método de projeto onde o processo da decomposibilidade orientada para
objetos é utilizada e modelos físicos e lógicos de objetos são descritos.
Programação Orientada para Objetos (OOP):
Método de implementação onde os programas são organizados como
coleções de objetos cooperativos, cada objeto representando uma
instância de uma classe.
Programas de computador e linguagens (1)
• Um programa de computador é, basicamente,
uma sequência de comandos ou instruções
representando um algoritmo a ser executado pela
máquina.
• O conjunto de instruções que um processador é
capaz de entender (executar), codificado na forma
binária, é denominado de linguagem de máquina.
Programas de computador e linguagens (2)
• Escrever programas codificados na linguagem de
máquina (números binários) é algo natural e eficiente para
os computadores, mas os humanos têm muita dificuldade
para entender e manipular esses números.
• As pessoas lêem e escrevem símbolos (palavras) muito
melhor do que longas sequências de dígitos.
• Para uso humano foram criadas as linguagens de
programação que facilitam a tarefa de desenvolver
programas.
Linguagens de programação
• Normalmente os programadores usam linguagens de
programação de alto nível (LAN), que correspondem a um
nível de abstração elevado. Entre estas linguagens, pode-se
citar: Fortran, Cobol, C/C++/C#, Visual Basic, Pascal,
Delphi, Java, Lisp, Prolog, etc..
• As linguagens de máquina e assembly correspondem a
um nível de abstração baixo (mais próximas do hardware),
sendo denominadas de Linguagens de Baixo Nível (LBN).
Linguagens de máquina e assembly
A instrução em linguagem assembly do MIPS:
add $t1, $s3, $s4 # $t1  $s3 + $s4
Corresponde a seguinte instrução em linguagem de 
máquina: 
0x02744820 (hexadecimal) ou 
0000.0010.0111.0100.0100.1000.0010.0000 (binário) 
Linguagem assembly (de montagem)
• A linguagem assembly (ou de montagem) é a representação
simbólica da codificação binária da linguagem de máquina, sendo
portanto, mais legível porque utiliza símbolos no lugar de bits.
• Os símbolos nomeiam padrões de bits que ocorrem comumente, como
opcodes (códigos de operação) e especificadores de endereços
(registradores, posiçoes de memória, etc.), os quais são mais fáceis
de lembrar (mnemônicos) do que padrões de bits da linguagem de
máquina.
• Rótulos são usados para identificar e nomear palavras particulares da
memória que mantêm instruções ou dados.
programa imprime.s (1)
# PROGRAMA: imprime.s 
# PROGRAMADOR(ES): ......DATA: ...ENTRADA...SAIDA: 
# DESCRICAO: ......as e ld do Linux
#
.data
OI: .string "OI!!!\n“
TAM: .long . - OI
.section .text
.globl _start
_start:
programa imprime.s (2)
movl $0x4, %eax
movl $0x1, %ebx 
movl $OI, %ecx
movl TAM, %edx
int $0x80 # syscall write
movl $0x1, %eax 
movl $0x0, %ebx
int $0x80 # syscal end
Linguagens de alto nível
• Em contraste com as linguagens de máquina, essas linguagens se
caracterizam por não serem específicas para um computador e por
terem um conjunto mais amplo e expressivo de tipos de instrução.
• Linguagens de programação de alto nível foram criadas para tornar
mais produtivo o trabalho dos programadores. Logo, em última
instância, o objetivo das linguagens de programação é tornar mais
efetivo o processo de desenvolvimento de software.
Linguagens de alto nível:
13
Tradutores: montadores e compiladores
programa fonte programa objetoTradutor
Compilador
14
Tradutores e Interpretadores
• Os programas são traduzidos para a linguagem de
máquina através de outros programas “especiais” :
• Tradutor lê o programa inteiro e o converte para um
código-objeto (GNU gcc/g++, GNU as, javac, MS VS, etc.).
• Interpretador lê e executa um linha ou comando de
cada vez, não gerando código-objeto (Unix/Linux Shell,
MS PowerShell, Lisp, Prolog, etc.).
Tradução
• O processo de tradução efetua a conversão integral do programa
fonte para o código de máquina.
• Uma vez traduzido, o programa em linguagem de máquina pode
ser executado diretamente.
• A grande vantagem desse método é a otimização da eficiência na
execução dos programas.
• A principal desvantagem é a não portabilidade do código
executável entre as diferentes plataformas (hardware + software)
como Windows+Intel, Linux+Intel, Android+ARM, etc .
Montador (Assembler) 
• O conjunto de instruções de uma arquitetura (na forma de
mnemônicos) corresponde à linguagem de montagem da
arquitetura (linguagem assembly).
• Para que um programa codificado na linguagem assembly
seja entendido pela máquina, é necessário que suas
instruções estejam codificadas na forma binária, isto é, na
forma de 0s e 1s.
• O processo de tradução de uma linguagem de
montagem para linguagem de máquina é feito por
tradutores denominados de Montadores (ou Assemblers).
Interpretação
• Na interpretação, cada instrução do código fonte é traduzida para a
linguagem de máquina quando essa instrução necessita ser
executada. Imediatamente após esta tradução, o código gerado é
executado.
• A interpretação apresenta como vantagens: a facilidade para
executar comandos, a facilidade de depuração e a facilidade de
escrever programas mais flexíveis.
• A principal desvantagem da interpretação pura em relação à
compilação é a execução muito mais lenta do programa.
Compilação, ligação, carga e execução
Compilação, ligação, carga e execução (SODeitel3ed)
• Para executar um programa em linguagem de
programação são necessárias as etapas de compilação ou
montagem, ligação, carga e a execução .
• Compilação ou montagem: traduzi-lo para linguagem de
máquina.
• Ligação: ligá-lo a vários outros programas em linguagem
de máquina dos quais ele dependa.
• Carga: carregá-lo na memória principal e
• Execução: alocar o processador e transferir o controle
do processador para o programa a ser executado.
Montagem, ligação, carga e execução
a) Montagem (assembler as):
as –o<programa_objeto> <arquivo_fonte>
as –oimprime.o imprime.s
b) Ligação (linker ld) e criar o programa executável 
(imprime.exe) usando o ld (GNU linker): 
ld –o<programa_saida> <programa_objeto>
ld –oimprime.exe imprime.o
c) Executar (no Linux): 
./imprime.exe
• FORTRAN (IBM Mathematical FORmula TRANslation System) é uma
linguagem que foi desenvolvida inicialmente por Backus para
computadores IBM a partir de 1954.
• Era destinada para aplicaçõesnumérico-científicas, as quais
continham poucos dados e muita computação.
• Enfatizava eficiência computacional a despeito da eficiência dos
programadores
• Versões atuais de FORTRAN incorporam avanços de outras
linguagens.
•COBOL (COmmon Business Oriented Language) foi uma
linguagem desenvolvida no início da década de 60 por
encomenda do DoD (Departamento de Defesa Americano).
• Destinava-se a aplicações comerciais, as quais eram
caracterizadas por muitos dados e pouca computação.
• Buscou enfatizar legibilidade e ficar mais próxima do
inglês, mas acabou comprometendo a redigibilidade.
• Criada por Niklaus Wirth em 1970 com o objetivo de desenvolver
uma linguagem de programação de alto nível para uso didático, que
permitisse ensinar com clareza os principais conceitos envolvidos na
programação estruturada de computadores.
• Foi sucedida por Object Pascal, Object Pascal (usado no Delphi),
Kylix e Lazarus, Modula-2 e Oberon.
• A partir da versão 2005, o Delphi passou a se referir a sua
linguagem de programação como Delphi Language.
• Foi desenvolvida por Dennis Ritchie e Brian Kerningham no início
da década de 70 e teve como primeira utilização importante a
reescrita do sistema operacional UNIX (originalmente escrito em
Assembly).
• Logo a seguir, passou a ser muito utilizada em universidades e
surgiram várias versões de compiladores, não ficando mais
restrita ao UNIX.
• É uma linguagem de propósito geral, sendo adequada à
programação estruturada, porém é mais usada para escrever
compiladores, bancos de dados, editores de texto, etc.
• Padrão ANSI C (American Standard for Information System - 1990)
para compatibilidade entre sistemas e portabilidade.
•
Ken Thompson (Unix) e Dennis Ritchie ( C )
Histórico LPOO
• Conceito de Classe (década de 60) LP Simula 67.
• Smalltalk: primeira LP OO pura (década de 70). 
• Exemplos de LPs OO: Eiffel, Java, Object Pascal 
e C#.
• LPs como C++, Ada e Perl suportam o conceito 
de classe mas não são consideradas LPs OO em 
um sentido mais rigoroso.
Smalltalk
• Foi desenvolvida na década de 70 por Alan Kay, Dan Ingalls e Adele
Goldberg.
• Em Smalltalk tudo é objeto: números, classes, métodos, blocos de
código, etc.
• Não há tipos primitivos, ao contrário de outras linguagens orientadas a
objeto.
• Por isto é considerada uma LP puramente orientada a objetos
O C++ foi inicialmente desenvolvido por Bjarne Stroustrup, do Bell Labs,
durante a década de 1980, com o objetivo melhorar uma versão do
núcleo Unix.
Foi projetada para ser uma extensão de C com orientação a objetos.
Tinha como requisito de não implicar em perda de eficiência em relação
ao código em C.
O nome da linguagem foi alterado em 1983 de C with Classes para C++.
Foi responsável pela rápida aceitação da orientação a objetos.
Padrão ISO/IEC 14882:2011, conhecido como C++11 ou C++0x.
Softwares desenvolvidos em C++
• Adobe Acrobat, Photoshop e Illustrator
• Microsoft Office, Visual Studio e Internet Explorer
• BeOS, Mac OS X e Symbian OS
• Microsoft Windows (diversas versões)
• Mozilla Firefox e Thunderbird
• MySQL
• LibreOffice
• KDE (Qt)
Bjarne Stroustrup: criador do C++
Bjarne Stroustrup (2007)
m 200 7
Foi desenvolvida pela Sun em 1991
De acordo com a SUN Microsystems (Maio de 1995):
“Linguagem simples, orientada por objetos, distribuída, interpretada,
robusta, segura, independente de arquitetura, portável, de alta
performance, multi-threaded e dinâmica.”
Para obter a portabilidade dos programas utiliza código intermediário
(denominado bytecode), que é gerado pelo compilador e depois
interpretado pela Java Virtual Machine (JVM) durante a execução.
Tem sido tornado amplamente utilizada por causa de sua
confiabilidade, portabilidade e facilidade de uso na INTERNET.
MÁQUINA VIRTUAL – JAVA (JVM)
Máquina Virtual Java
Hardware
Sistema Operacional
Aplicação
Evolução do Java 
• JDK (Java Development Kit) Alpha and Beta (1995)
• JDK 1.0 (1996)
• J2SE (Java 2 Platform, Standard Edition) 1.2 (1998)
• J2SE 1.4 (2002)
• J2SE 5.0 (2004)
• Java SE 6 (2006)
• Java SE 7 (2011)
• Java SE 8 (March 18, 2014)
Plataformas Java 
• Java Card: smartcards.
• Java Platform, Micro Edition (Java ME): ambientes 
com recursos limitados como PDAs, celulares e 
samrtphones.
• Java Platform, Standard Edition (Java SE): 
workstation environments.
• Java Platform, Enterprise Edition (Java EE): 
ambientes de empresas de grande porte ou 
Internet.
JDK-8u11: requisitos
Sistema operacional: Windows XP ou superior. 
Hardware:
• Processador Pentium 2 266 
• 128 MB de RAM 
• Espaço disponível no disco rígido: 181 MB (instalação) + 68 MB/32 
MB para código fonte
Tamanho dos pacotes:
Windows x86 151.81 MB jdk-8u11-windows-i586.exe
Windows x64 155.29 MB jdk-8u11-windows-x64.exe
Linguagem C#
• Linguagem de programação orientada a objetos desenvolvida pela
Microsoft como parte da plataforma .NET, escalável para permitir que
uma aplicação possa ser executada em plataformas
(hardware/software) distintas como servidores, desktops, dispositivos
móveis, etc.
• Segue os padrões padrão ISO/IEC(International Organization for
Standardization/ International Engineering Consortium) e ECMA
(European Computer Manufactures Association).
• Sua sintaxe orientada a objetos foi baseada no C++, mas foi
fortemente influenciada por outras linguagens de programação como
Object Pascal e Java.
Anders Hejlsberg: criador do C#
Plataforma .NET 
Plataforma .NET 
• Microsoft .NET (.NET Framework) é uma plataforma para
desenvolvimento e execução de sistemas e aplicações.
• Todo código gerado para .NET, pode ser executado em
qualquer dispositivo que possua um framework de tal
plataforma.
• Deste modo, pode ser considerada um ambiente para
criação, instalação e execução de serviços e outros
aplicativos com a finalidade de prover portabilidade de
produtos desenvolvidos entre diversas plataformas,
baseada em padrões de mercado tais como XML e SOAP .
Evolução do C# 
Version CLR Language
specification
Date .NET Framework Visual Studio
Microsoft
C# 1.0 1.0 January
2002
January 2002 .NET Framework 1.0 Visual Studio .NET 2002
C# 1.2 1.1 October
2003
April 2003 .NET Framework 1.1 Visual Studio .NET 2003
C# 2.0 2.0 September 2005 November
2005
.NET Framework 2.0 Visual Studio 2005
C# 3.0 2.0
2.0
SP1
August
2007
November
2007
.NET Framework 2.0 
.NET Framework 3.0
.NET Framework 3.5
Visual Studio 2008
Visual Studio 2010
C# 4.0 4.0[C] April 2010 April 2010 .NET Framework 4 Visual Studio 2010
C# 5.0 4.5[D] June 2013 August 2012 .NET Framework 4.5 Visual Studio 2012
Visual Studio 2013
Visual Studio 2013 DKTP: requisitos
Sistema operacional: Windows 7 SP1; Windows 8; Windows 8.1; 
Windows Server 2008 R2 SP1 e; Windows Server 2012. 
Hardware:
Processador de 1,6 GHz ou mais rápido
1 GB de RAM (1,5 GB para execução em uma máquina virtual)
5 GB de espaço disponível em disco rígido
Placa de vídeo compatível com DirectX 9 e resolução 1024 x 768
Tamanho do pacote:
800 MB
Objective-C
- Foi criado inicialmente por Brad Cox e Tom Love no início da década de
1980, sendo que sua principal descrição, na forma original, foi
publicada no livro de Cox, Object-Oriented Programming, An
Evolutionary Approach, de 1986.
- Linguagem de programação usada para escrever software para Mac
OS X e iOS.
- Deriva sua sintaxe das linguagens C e Smalltalk, podendo ser
considerada um superconjunto do C, herdando sua sintaxe, tipos
primitivos, fluxo de declarações de controle e adicionando sintaxepara
definição de classes e métodos.
Ambientes de programação Objective-C
- MacOS X: Developer Tools, gratuitos da Apple, que incluem o
compilador gcc e um ambiente de programação denominado Xcode.
- Linux: gcc, editor de texto (vi, pico, emacs), ambiente de programação
como o KDevelop ou ferramentas GNUStep.
- Windows: compilador Objective-C que acompanha o sistema MinGW
(http://www.mingw.org), editor de texto puro como o Notepad ou
algum outro ambiente de programação.

Outros materiais