MAB224- PROGRAMAÇÃO DE COMPUTADORES II - ENGENHARIA (BÁSICO) /POLI-UFRJ Exercício para treino da Prova 4: Neste exercício você deve escrever as classes: Livro, Capitulo, e Paragrafo. A idéia é que um livro possui vários capítulos, e um capítulo possui vários parágrafos. 1. Cada instância de Livro tem os seguintes atributos: - título (string) - autor (string) - capítulos (list) – uma lista com os capítulos desse Livro Crie um construtor para essa classe com o método __init__, recebe titulo e autor como parâmetros, e inicializa a lista de capítulos. 2. Cada instância de Capitulo deve ter os atributos: - livro (Livro) – o Livro a que pertence o capítulo) - titulo (string) - paragrafos (list) – uma lista com os parágrafos do livro. O construtor do capítulo cria o primeiro parágrafo. O texto do parágrafo é o título do capítulo. O número de linhas antes e depois desse parágrafo deve ser 3. Se quiser sofisticar um pouco, tente colocar o título do capítulo no centro da linha, ou aproximadamente. 3. Cada instância de Paragrafo deve ter os atributos: - capitulo (Capitulo) - o capitulo a que pertence o parágrafo. - texto (string) – a string que contém o texto deste parágrafo - desloc (int) – o deslocamento que queremos apenas para a primeira linha do parágrafo (o valor default pode ser 5 espaços). - linhasAntes (int) - o número de linhas em branco antes de iniciar o parágrafo. O valor default pode ser 0. - linhasDepois (int) – o número de linhas em branco depois do final do parágrafo. O valor default pode ser 1. Crie um construtor para a classe Paragrafo, que recebe os parâmetros acima, usando valores default para os três últimos. 4. Métodos da classe Livro: a) imprimir() – esse método imprime todos os capítulos do livro da seguinte forma: - Imprime uma linha com o título do livro, e outra em seguida com o autor. - Imprime uma linha em branco. Em seguida imprime todos os capítulos, usando o método imprimir() da classe Capítulo. b) salvar(nome_arquivo) – esse método salva o livro no disco, usando o pickle, no arquivo de nome dado pelo parâmetro nome_arquivo. Nesse método, leve em conta que pode ocorrer uma exceção do tipo IOError. c) recuperar (nome_arquivo) – esse método lê o arquivo que foi serializado no disco, restaura o livro, e retorna uma referência para o livro recuperado. Nesse método, leve em conta que pode ocorrer uma exceção do tipo IOError. 5. Métodos da classe Capítulo: a) imprimir() – esse método imprime os parágrafos do capítulo em sequencia, usando para cada um o método imprimir() da classe Paragrafo. Após imprimir todos os parágrafos, o método pula uma linha, e imprime uma linha no formato abaixo: =========== Fim do Capítulo <nome do capítulo> ============= 6) Métodos da classe Paragrafo: a) imprimir() – esse método deve avançar o número de linhas dado pelo atributo linhasAntes, imprimir o texto do parágrafo, e depois avançar o número de linhas dado pelo atributo linhasDepois. Antes de começar a imprimir o texto, deve colocar o número de espaços dado pelo atributo desloc. Exemplo de teste: livro = Livro("Python para todos", "Miguel Jonathan") intr = Capitulo(livro,"Introdução") listas = Capitulo(livro,"Listas") texto = 'Python é uma linguagem muito usada atualmente por ser flexivel e ter muitas estruturas de dados pré-definidas. Neste capítulo vamos dar uma visão geral desta linguagem.' Paragrafo(intr, texto) texto = "Python é também uma linguagem orientada a objetos" Paragrafo (intr, texto) texto = "Listas são estruturas indexadas pré-definidas. São estruturas mutáveis, ou seja, permitem alterar seus valores." Paragrafo (listas, texto) livro.imprimir() livro.salvar() livro = None livro = Livro().recuperar() livro.titulo = "Livro Recuperado" livro.imprimir() Abaixo está a saída impressa na tela para esse teste: >>> Python para todos Miguel Jonathan Introdução Python é uma linguagem muito usada atualmente por ser flexivel e ter muitas estruturas de dados pré-definidas. Neste capítulo vamos dar uma visão geral da linguagem. Python é também uma linguagem orientada a objetos ============Fim do Capitulo Introdução============== Listas Listas são estruturas indexadas pré-definidas. São estruturas mutáveis, ou seja, permitem alterar seus valores. ============Fim do Capitulo Listas============== Livro Recuperado Miguel Jonathan Introdução Python é uma linguagem muito usada atualmente por ser flexivel e ter muitas estruturas de dados pré-definidas. Neste capítulo vamos dar uma visão geral da linguagem. Python é também uma linguagem orientada a objetos ============Fim do Capitulo Introdução============== Listas Listas são estruturas indexadas pré-definidas. São estruturas mutáveis, ou seja, permitem alterar seus valores. ============Fim do Capitulo Listas==============