1. Apresentação Neste capítulo estão descritos os objetivos gerais do livro, os requisitos desejáveis do estudante para que possa utilizá-lo eficientemente, e os recursos necessários em sua utilização. Contém também instruções para teste do ambiente de programação utilizado para o desenvolvimento dos exercícios propostos ao longo do texto e, ao final, alguns exercícios para avaliação dos conhecimentos prévios do estudante. 1.1. Objetivos Este livro tem como objetivo dar ao estudante conhecimentos básicos de programação orientada a objetos em Java, a partir de uma compreensão abrangente dos conceitos de orientação a objetos. Ao concluir o curso, o estudante estará apto não só a elaborar seus primeiros programas em Java como também terá adquirido uma base sólida de conhecimentos que lhe permitirá avançar em seus estudos, seja na direção de um maior aprofundamento na linguagem Java ou outras linguagens orientadas a objetos, como na direção de outras técnicas orientadas a objetos para desenvolvimento de software. 1.2. Necessidade de um Livro Texto Didático 1.3. Pré-requisitos Desejáveis É suposto que o estudante já domine os conceitos básicos de programação estruturada, tais como, algoritmos, tipos de dados, variáveis, expressões aritméticas e lógicas, estruturas de controle do fluxo de execução, funções e subrotinas. Recomendamos ao estudante que queira fazer uma revisão desses conceitos antes de iniciar o curso consultar [Saliba92]. É altamente desejável que o estudante seja versado numa linguagem de programação convencional baseada em procedimentos, como Basic, C, Clipper, Cobol-85 ou Pascal. 1.4. Organização do Livro O presente livro texto está subdividido em quatro partes, descritas a seguir. Cada parte é concluída com a apresentação de um estudo de caso que utiliza os conceitos daquela parte. O diagrama da figura 1 apresenta as dependências existentes entre as partes e os capítulos contidos no livro.. Parte I: Capítulos 2 a 6 Parte I apresenta os fundamentos básicos da programação orientada a objetos. No capítulo 2 (Fundamentos de Estruturação de Sistemas) são discutidos os mecanismos básicos que utilizamos para organizar o nosso conhecimento e administrar a complexidade do mundo em que vivemos No capítulo 3 (Introdução à Programação Orientada a Objetos) são revistas as origens da Programação Orientada a Objetos, situando-a no contexto mais geral da evolução das técnicas de programação e das demais técnicas ditas OO. Ainda nesse capítulo, são apresentados os conceitos de ocultamento da informação, encapsulamento e tipos abstratos de dados. No capítulo 4 (Objetos e Classes) são apresentados os conceitos de objetos, classes, métodos e mensagens, explicando como os objetos interagem num programa para realizar uma ação determinada. 2 Cap. 1 / Apresentação O capítulo 5 (O Ciclo de Vida dos Objetos) apresenta os conceitos de criação e destruição de objetos, completando um conjunto mínimo de conhecimentos que permita ao estudante compreender como funciona um programa orientado a objetos. O capítulo 6 (Estudo de Caso: Caixa Automático) desenvolve um programa exemplo em Java de aplicação em Java, utilizando apenas os conceitos apresentados na parte I. Parte II: Capítulos 7 a 9 Parte II complementa os conceitos básicos de Orientação a Objetos apresentados na primeira parte. No capítulo 7 (Herança) são apresentados os conceitos de herança simples e múltipla e no capítulo 8 (Polimorfismo e Acoplamento Dinâmico) são apresentadas as diferentes modalidades de polimorfismo. Nos dois casos, são discutidas as implicações do uso desses mecanismos. O capítulo 9 (Estudo de Caso: Controle de Biblioteca) apresenta um outro estudo de caso englobando os conceitos apresentados nas partes I e II. Parte III: Capítulos 10 a 13 Parte III trata de alguns mecanismos mais avançados e extremamente importantes para a obtenção de sistemas orientados a objetos bem estruturados em Java. O capítulo 10 (Classes Abstratas e Concretas) apresenta o conceito de classes abstratas e discute as vantagens e cuidados a serem observados em sua utilização. O capítulo 11 (Interfaces) apresenta o conceito de interfaces e faz uma comparação entre hierarquias de interfaces e de classes. O capítulo 12 (Tratamento de Exceções) descreve os mecanismos de Java para tratamento de exceções. O capítulo 13 (Estudo de Caso: Sistema de Folha de Pagamento) desenvolve um outro estudo de caso, onde são utilizados todos os mecanismos apresentados nas partes I, II e III. Cap. 1 / Apresentação 3 I 2 3 5 4 6 II 8 7 9 III 11 10 13 12 IV 14 15 Fig. 1.3 - Dependências Entre os Capítulos do Livro Parte IV: Capítulos 14 e 15 Trata de dois outros mecanismos de Java, de aplicação mais restrita que os mecanismos descritos na 3a. parte. O capítulo 14 (Metaclasses) apresenta o conceito de metaclasses, discutindo sua aplicação e os problemas envolvidos com a sua utilização. O capítulo 15 (Pacotes) apresenta o conceito de pacote e sua aplicação. 1.5. Como Utilizar esse Livro O plano do curso, tal como apresentado na seção anterior, adapta-se a diferentes situações, conforme os conhecimentos prévios dos estudantes e os objetivos específicos do curso. Estudantes que já tenham alguma experiência com outra linguagem de programação orientada a objetos, como C++ por exemplo, podem utilizar as partes I e II apenas para uma revisão dos conceitos de OO, detendo-se mais nos estudos de caso (capítulos 5 e 8) e nas partes III e IV. Por outro lado, um curso introdutório a orientação a objetos pode se limitar ao conteúdo das partes I e II. Para desenvolvimento integral desse curso estima-se que sejam necessárias 48 horas aula, sendo sugerida a sua distribuição em 24 sessões de 2 horas, da seguinte forma: Sessão Capítulo do Livro 1 2 Conteúdo Programático Fundamentos e histórico de orientação a objetos Copyright © 2003, Cecília Rubira. Todos os direitos reservados. Cap. 1 / Apresentação 4 2e3 3.1 a 3.3 Conceitos de objetos, classes, métodos e mensagens 4 3.4 a 2.5 Definição de classes em Java 5 4 6 5.1 a 5.2 Estudo de caso I - análise e projeto 7e8 5.3 a 5.4 Estudo de caso I - implementação 9 6 Herança 10 7 Polimorfismo e Acoplamento Dinâmico 11 e 12 8.1 a 8.3 Estudo de caso II - análise e projeto 13 e 14 8.4 a 8.5 Estudo de caso II - implementação 15 9 Classes Abstratas 16 10 Interfaces 17 11 Tratamento de Exceções 18 e 19 12.1 a 12.3 Estudo de caso III - análise e projeto 20 a 22 12.4 a 12.5 Estudo de caso III - implementação 23 13 Meta classes 24 14 Pacotes Ciclo de vida dos objetos Dessa forma o curso pode ser inserido com facilidade numa disciplina de graduação de um semestre (aproximadamente 20 semanas). Pode ser aplicado também em cursos de programação com duração de aproximadamente 2 meses, com 3 sessões de 2 horas por semana. Finalmente, estudantes ou profissionais com maior experiência em programação podem utiliza-lo de forma intensiva, com sessões diárias, podendo concluí-lo em apenas 1 mês. 1.6. Recursos necessários 1.6.1. Ambiente de Hardware e Software Para pleno aproveitamento do curso o estudante deverá ter acesso a um computador com software apropriado para edição, compilação e execução de programas em Java. Uma das grandes vantagens da linguagem de programação Java é a sua portabilidade, que nos permite utiliza-la em praticamente qualquer tipo de computador, desde um PC compatível rodando Windows 95 até as mais sofisticadas estações de trabalho. A edição de um programa Java pode ser feita utilizando-se qualquer editor de textos simples, tal como o EDIT do DOS ou WordPad do Windows 95. Para compilação e execução é possível obter-se, gratuitamente, o Java SDK (Java Software Development Kit), diretamente do site da Sun na Internet. No Apêndice A deste curso estão descritos em detalhes todos os passos necessários para preparação desse ambiente. 1.6.2. Teste do Ambiente Para uma rápida verificação do ambiente instalado recomendamos a edição, compilação e execução de um pequeno programa Java, de acordo com os seguintes passos: Cap. 1 / Apresentação 5 1.5.2.1. Edição do Programa Utilizando o editor de textos disponível no ambiente crie um arquivo de nome hello.java contendo as seguintes linhas: class hello { static public void main(String argv[]) { System.out.println("Hello World"); } } A digitação deve ser feita utilizando letras maiúsculas e minúsculas, exatamente como aparecem no programa. Em Java o nome hello é diferente de Hello. Ao utilizar um editor de textos que possua recursos de formatação, como o WordPad, lembre-se de salvar o arquivo em formato texto puro, sem caracteres de formatação. No caso do WordPad, por exemplo, utilize a opção "Salvar como ..." e selecione "Tipo de documento: Documento Texto". Verifique também se o nome do arquivo salvo possui apenas a extensão .java. Alguns editores acrescentam a extensão .txt automaticamente, criando arquivos com nomes como hello.java.txt ou hello.txt. Se necessário, mude o nome do arquivo para hello.java após salva-lo. 1.5.2.2. Compilação do Programa Chame o compilador Java fornecendo o arquivo hello.java como entrada. Se estiver sendo utilizado o Java SDK, execute o comando: javac hello.java Note que o nome do arquivo de entrada também é sensível a letras maiúsculas ou minúsculas e que a extensão .java deve ser incluída. Se recebida alguma mensagem de erro verifique se o conteúdo do arquivo corresponde exatamente às linhas do programa apresentado acima, efetue as correções necessárias e compile-o novamente. Como resultado da compilação será criado um arquivo de nome hello.class, que contém o código executável Java. 1.5.2.3. Execução do Programa Execute o interpretador Java, fornecendo o arquivo hello.class como entrada. Se estiver sendo utilizado o Java SDK, execute o comando: java hello Note que, assim como na compilação, o nome do arquivo de entrada também é sensível a letras maiúsculas ou minúsculas, porém a extensão .class não deve ser incluída. Como resultado da execução o programa irá enviar uma única mensagem na tela, conforme abaixo: Hello World 1.7. Avaliação inicial Seguem exercícios para avaliação dos conhecimentos de programação do estudante. Para esclarecimento de dúvidas quanto à sintaxe básica de Java consulte o Apêndice B. Copyright © 2003, Cecília Rubira. Todos os direitos reservados.