Baixe o app para aproveitar ainda mais
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.
Compartilhar