INF 103 – Langage JAVA Examen de rattrapage 23 février 2017

publicité
INF103–LangageJAVA
Examenderattrapage
23février2017
Nometprénom:……………………….………………………………………………………….
Groupe:…………..
Enseignant:…………......................................
Écrirelesréponsesdirectementsurlesfeuillesdusujetdanslescasesprévuesàceteffet,
latailledescasesderéponsen’estpasforcémentliéeàlatailledesréponses.
Lebarèmeestsur20points.
Lebarèmeestdonnéàtitreindicatifetpourraêtrerevuaumomentdelacorrectionsiles
correcteursl’estimentnécessaire.
Lesujetcomporte11pages.
Pasdedocumentsautorisés,téléphoneséteints.
Desréponsesillisiblesneserontpascorrigées.
1/11
1. (1points)Comments’appellelepremierlangageorientéobjet?Cocherlabonnecase.
o Java
o C++
o SmallTalk
þ Simula
o Basic
o Eiffel
o ObjectFirst
2. (1points)SoituneclasseStudentavecdeuxconstructeursdontlessignaturessont:
Student(String name)
et
Student(String name, String school)
Danslecodedecepremierconstructeur,commentpeut-onappelerledeuxièmeavec
unargumentpardéfautpourleparamètreschool,disons"ENST"?
VoirlecoursJava:Basesdelaprogrammation,transparent19.
2/11
3. (1 points) Pourquoi dit-on que c’est l’objet qui exécute une de ses méthodes?
Commentaccède-t-onàcetobjetpendantl’exécutiondelaméthode?
Lesméthodessontexécutéespardesobjetslorsqu’ilsreçoiventunmessagecorrespondant
àl’en-têtedelaméthode.L’objetestaccessibleàtraverslapseudovariablethis.
4. (1 points) On désire compter tous les objets créés appartenant à une classe donnée,
commentfait-on?
On déclare une variable de classe initialisée à 0. Chaque fois qu’un objet est créé, on
incrémentecettevariable.Cecidoitsefairedanschacundesconstructeursdelaclasse.
3/11
5. (1 points) Est-il possible de mettre les constructeurs dans une interface de
programmationenJava?
Non
6. (1points)Qu’appelle-t-onsurchargedeméthodesenJava?
C’estquanddeuxméthodesontmêmenommaisdesparamètresdifférents.
4/11
7. (1 points) Citer les trois grands types d’exceptions en Java. Quelles sont leurs
particularités?
CoursJava:lesexceptions,transparents13.
8. (1points)VousvoyezdansunprogrammeJaval’expression:
new Line2D.Float(2.53,3.54)
QuelleestlanaturedeLine2D.Float ?
C’estuneclasseimbriquée,voirlecoursComplémentsindispensables.
5/11
9. (1 points) Dans les TPs proposés par le cours Java, on demande de programmer les
interfaces des différents objets intervenant dans l'algorithme de Dijkstra puis de
programmer cet algorithme en utilisant ces interfaces. Pourquoi ? Qu'est-ce que cela
apporte?
Ondésireprogrammerl'algorithmedeDijkstraenfonctiondesinterfacesdetellemanière
que cet algorithme soit valable pour n'importe quelle implémentation (du graphe, des
sommets,destransitions,etc.)respectantcesinterfaces.
10. (1points)Commentappelle-t-onlemodedepassagedesparamètresenJava?
C'estl'appelparvaleur,transparents38etsuivantdeClasseetobjets.
6/11
11. (1points)L'instruction
A a = (B) b ;
secompile.Donnerlaoulesconditionspourquecetteinstructioncompile:
o laclasseBestunesous-classedeA(inutiledecasterdanscecas)
þ laclasseBestunesuperclassedeA
þ letypedéclarédebestunesous-classedeB
o letypedéclarédebestunesuperclassedeB
12. (1points)Unattributstatiqueestaussiappelé(donnerlaoulesréponsesjustes):
o unevariabled'instance
þ unevariabledeclasse
o unevariablelocale
þ unevariableglobale(parfois,pastrèsOO,onpeutcocherounepascocher)
o unevariabled'interface
13. (1points)Uneclassequiimplémenteuneinterface(donnerlaoulesréponsesjustes):
o estobligatoirementuneinterface
o estobligatoirementuneclasseabstraite
þ peutêtreuneclasseabstraite
o estobligatoirementuneclasseconcrète
þ peutêtreuneclasseconcrète
14. (1 points) Quelle sont les similarités et les différences entre une collection de type
ArrayListetunecollectiondetypeLinkedList ?
Touteslesdeuxsontdesstructurespouvantcontenirdesobjets.Ellesimplémententtoutes
les deux l'interface List. On ne définit pas la taille de la structure car on peut ajouter
autantd'élémentsquelamémoiredeJavalepermet.
L'accèsàunélémentparsonindexsefaitentempsconstantdansuneArrayListalors
qu'ilsefaitentempslinéairedansuneLinkedList.
L'insertion d'un élément nécessite la recopie de tous les éléments qui suivent l'index
d'insertion dans le cas d'une ArrayList alors que ce n'est pas le cas pour une
LinkedList.
7/11
15. (2 points) On se donne une classe abstraite Animal et des classes concrètes qui
héritent de la classe Animal : Vache, Chien et Pigeon. La classe Vache à une
méthode meugler(). La classe Chien a une méthode aboyer(). La classe
Pigeonauneméthoderoucouler().Onadoncl’arbred’héritagesuivant:
Ondésireuneméthodevoid crier()quilorsqu’elleestexécutéeparunobjetde
typeAnimalréaliselecridel’animal:pourunobjetdetypeVache,elleappellerala
méthode meugler(); pour un objet de type Chien, elle appellera la méthode
aboyer();pourunobjetdetypePigeon,elleappelleralaméthoderoucouler().
Programmercrier().Préciserdansquelleclassevousécrivezdesprogrammes.
DansclasseAnimal :
public abstract void crier() ;
DansclasseVache :
public void crier() { meugler(); }
DansclasseVache :
public void crier() { aboyer (); }
DansclassePigeon :
public void crier() { roucouler (); }
8/11
UnesuitedeSyracusesecalculecommesuit:onsedonneunentierarbitraireU0.Puison
calculeUn+1enfonctiondeUnaveclaformule:
Un+1 = Un / 2 si Un est pair, 3Un + 1 sinon
16. (1point)DéfiniruneclasseSyracusedontleconstructeurprendraU0enargumentet
quiauralesméthodessuivantes:
• int current()quirendleUncourantencommençantparU0;
• void next()quicalculel'entiersuivantquecurrent()rendra;
• boolean hasNext() qui dit quand la suite est terminée sachant qu'elle se
termine1aveclavaleur1.
public final class Syracuse
{
private int u ;
public Syracuse(int u0)
{
u = u0 ;
}
public boolean hasNext()
{
return (u != 1) ;
}
public void next()
{
u = (u % 2 == 0) ? (u / 2) : (3 * u + 1) ;
}
public int current()
{
return u ;
}
}
1Onaconstaté,maisnonprouvé,quelessuitesdeSyracuseseterminetoujoursparla
répétitiondesvaleurs4,2,1.
9/11
17. (1 point) Donner une méthode void printFromFirst(Sysracuse s) d'une
autreclassequenousappelonsMain.Cetteméthodepermetd'afficherunesuitede
SyracuseencommençantparU0.
LaméthodeàrajouterdanslaclasseMain:
public static final void printFromFirst(Syracuse s)
{
while (true) {
System.out.println(s.current()) ;
if (s.hasNext())
s.next() ;
else
return ;
}
}
18. (1point)Donneruneméthodevoid printFromLast(Sysracuse s)toujours
danslaclasseMainquipermetd'afficherunesuitedeSyracuseencommençantparle
dernier.
LaméthodeàrajouterdanslaclasseMain:
public static final void printFromLast(Syracuse s)
{
int u = s.current() ;
if (s.hasNext()) {
s.next() ;
printFromLast(s) ;
}
System.out.println(u) ;
}
10/11
19. (1points)EcrireaméthodemaindelaclasseMain.CeprogrammeMainprenden
argumentunentieretletransmetclassiquementdansletableauargsargumentdela
méthode main. La méthode main va transformer args[0] en un entier puis
affichera la suite de Syracuse commençant à cet entier une fois avec
printFromFirstetunefoisavecprintFromLast.
public static final void main(String[] args)
{
int n = Integer.parseInt(args[0]) ;
Syracuse s1 = new Syracuse(n) ;
printFromFirst(s1) ;
/* Don't forget to recreate a Syracuse */
Syracuse s2 = new Syracuse(n) ;
printFromLast(s2) ;
}
FINDUSUJET
11/11
Téléchargement