\documentclass[a4paper]{article} \newif\ifshowcode \showcodetrue \usepackage{latexsym} \usepackage[portuges]{babel} \usepackage{a4wide} \usepackage[latin1]{inputenc} \parindent=0pt \parskip=2pt \newtheorem{questao}{Quest\~{a}o} \setlength{\oddsidemargin}{0in} \setlength{\evensidemargin}{0in} \setlength{\topmargin}{0in} \addtolength{\topmargin}{-\headheight} \addtolength{\topmargin}{-\headsep} \setlength{\textheight}{8.9in} \setlength{\textwidth}{6.5in} \setlength{\marginparwidth}{0.5in} \title{M\'{e}todos de Programa\c c\~{a}o II\\ LECOM (1º ano)} \author{3ª Aula} \date{Ano Lectivo de 05/06} \begin{document} \pagenumbering{arabic} \maketitle %-------------------------------------------------------------------------- \section{Objectivos} Este problema tem 2 objectivos: \begin{itemize} \item Criar uma nova Classe e test\´a-la através de uma Classe auxiliar com o método main() \item Manipular matrizes, ou seja arrays de arrays; \end{itemize} %-------------------------------------------------------------------------- \section{Exerc\'{i}cio} Pretende-se desenvolver um programa Java para fazer a gest\~ao das turmas de um professor, sabendo-se que no m\´aximo um professor tem 10 turmas.\\ Para cada turma (de tamanho variável) ser\´a registado apenas o n\´umero de cada aluno. \subsection{Resolu\c c\~ao: a classe Turmas} A primeira coisa a fazer \´e criar uma classe, Turmas, que encapsule a informa\c c\~ao de cada turma, que ser\´a um vector de inteiros com os n\´umeros dos respectivos alunos, juntamente com as opera\c c\~oes que precisamos de disponibilizar: \begin{itemize} \item criar um conjunto de turmas, com um m\´aximo de turmas \item inserir os alunos numa dada turma \item listar os alunos de uma dada turma \item indicar os alunos de uma dada turma \item indicar a turma com mais alunos \item indicar o total de turmas \end{itemize} Para agregar as v\´arias turmas de um professor definiremos um outro vector (array) cujas componentes sejam os vectores com os n\´umeros dos alunos. Assim a estrutura de dados, privada da classe Turmas, será uma matriz, ou seja um vector de vectores. @o Turmas.java @{ public class Turmas{ private int[][] turmas; private final int TAM_MAX = 10; public Turmas(){ this.turmas=new int[TAM_MAX][]; } public Turmas(int n){ this.turmas=new int[n][]; } public void insTurma(int t, int[] als){ this.turmas[t-1] = als.clone(); } public void listaTurma(int t){ System.out.println("Listagem dos Alunos da Turma "+t); for(int i=0; i max) { max = this.turmas[i].length; t = i; } } return(t+1); } } @} \subsection{Teste \`a classe Turmas} Para testar a classe Turmas vamos escrever uma outra classe, TesteTurmas, que tenha apenas um m\´etodo, main() ,dentro do qual vamos criar 2 objectos, ou inst\^ancias, da dita classe.\\ Depois vamos invocar os m\´etodos acima desenvolvidos, imprimindo o respectivo resultado. @o TesteTurmas.java @{ public class TesteTurmas{ public static void main (String[] args){ int[] a1={11,12,13,14,15,16}, a2={21,22,23}, a3={31,32,33,34,35,36,37,38,39}; Turmas minhasTurmas, tuasTurmas; int maior; minhasTurmas = new Turmas(3); minhasTurmas.insTurma(1,a1); minhasTurmas.insTurma(2,a2); minhasTurmas.insTurma(3,a3); System.out.println("Neste momento tenho um total de: "+minhasTurmas.numTurmas()+" turmas"); minhasTurmas.listaTurma(2); minhasTurmas.listaTurma(1); minhasTurmas.listaTurma(3); maior = minhasTurmas.maiorTurma(); System.out.print("Turma com mais alunos (("+maior+")) "); System.out.println("tem "+minhasTurmas.alunosTurma(maior)+" alunos."); tuasTurmas = new Turmas(); System.out.println("Neste momento tens um total de: "+tuasTurmas.numTurmas()+" turmas"); } } @} \section{Ficheiros} @f \end{document}