SLAM_4 issueshttps://framagit.org/c.jousse/slam4-realisation_maintenance_composants_logiciels/-/issues2019-10-13T17:29:07Zhttps://framagit.org/c.jousse/slam4-realisation_maintenance_composants_logiciels/-/issues/10Exercice 4 :2019-10-13T17:29:07ZCharly JOUSSEExercice 4 :## Parisien.java
```java
package ex3;
public abstract class Parisien {
private int age;
private String nom;
private String prenom;
public void VivireAParis() {
for(int i = 0; i <age * 365; i++) {
Metro();
Boulot();
D...## Parisien.java
```java
package ex3;
public abstract class Parisien {
private int age;
private String nom;
private String prenom;
public void VivireAParis() {
for(int i = 0; i <age * 365; i++) {
Metro();
Boulot();
Dodo();
}
}
private void Metro()
{
System.out.print ("beeeeep clac pshhh VRRRRR...");
}
private void Dodo()
{
System.out.print ("Zzzzz...");
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getNom() {
return nom;
}
public void setNom(String nom) {
this.nom = nom;
}
public String getPrenom() {
return prenom;
}
public void setPrenom(String prenom) {
this.prenom = prenom;
}
public Parisien() {
age = 0;
nom = null;
prenom = null;
}
public Parisien(int age, String nom, String prenom) {
super();
this.age = age;
this.nom = nom;
this.prenom = prenom;
}
}
```TP : Classes Abstraites et les InterfacesCharly JOUSSECharly JOUSSEhttps://framagit.org/c.jousse/slam4-realisation_maintenance_composants_logiciels/-/issues/11Partie 12019-10-11T08:35:58ZCharly JOUSSEPartie 1## Analyse du diagramme
Que signifie la multiplicité placée sur l'association reliant les 2 classes (et le nom de rôle **leClub**) :
Licencié relié à la classe Club, leClub devient une propriété de la classe Licencié## Analyse du diagramme
Que signifie la multiplicité placée sur l'association reliant les 2 classes (et le nom de rôle **leClub**) :
Licencié relié à la classe Club, leClub devient une propriété de la classe LicenciéCharly JOUSSECharly JOUSSEhttps://framagit.org/c.jousse/slam4-realisation_maintenance_composants_logiciels/-/issues/22MaVue.java2019-11-09T13:05:23ZCharly JOUSSEMaVue.java```java
package vue;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.List;
import javax.swing.JFrame;
import javax.swing.JSpinner;
import java.awt.BorderLayout;
impo...```java
package vue;
import java.awt.EventQueue;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.List;
import javax.swing.JFrame;
import javax.swing.JSpinner;
import java.awt.BorderLayout;
import javax.swing.JScrollBar;
import javax.swing.JTextField;
import classes.Club;
import classes.Licencie;
import controleur.ControleurPrincipal;
import dao.DAO;
import javax.swing.JTextArea;
import javax.swing.JComboBox;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.JList;
import javax.swing.JButton;
import dao.ClubDAO;
public class MaVue extends JPanel {
private JFrame frame;
public JComboBox comboBox;
private ControleurPrincipal controleur;
private JTextArea textArea;
public void remplirComboClub(List<Club> lesClubs) {
comboBox.addItem("-");
for (Club c : lesClubs) {
comboBox.addItem(c.getNom());
}
}
public void AffichageDonnee(List<Licencie> lesLicencies) {
textArea.setText("");
for (Licencie l : lesLicencies) {
textArea.setText(textArea.getText() + "\n" + l.getNom());
}
}
/**
* Create the application.
*/
public MaVue(ControleurPrincipal controleur) {
this.controleur = controleur;
frame = new JFrame();
frame.setBounds(100, 100, 476, 300);
frame.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
frame.getContentPane().setLayout(null);
frame.setVisible(true);
comboBox = new JComboBox();
comboBox.setBounds(174, 12, 203, 24);
comboBox.setActionCommand("SlctClub");
comboBox.addActionListener(controleur);
comboBox.setVisible(true);
frame.getContentPane().add(comboBox);
JLabel lblChoisirUnClub = new JLabel("Choisir un Club : ");
lblChoisirUnClub.setBounds(32, 17, 124, 15);
lblChoisirUnClub.setVisible(true);
frame.getContentPane().add(lblChoisirUnClub);
JButton btnAjouter = new JButton("Ajouter");
btnAjouter.setBounds(32, 217, 114, 25);
btnAjouter.setVisible(true);
frame.getContentPane().add(btnAjouter);
JButton btnNewButton = new JButton("Supprimer");
btnNewButton.setBounds(196, 217, 114, 25);
btnNewButton.setVisible(true);
frame.getContentPane().add(btnNewButton);
JButton btnQuitter = new JButton("Quitter");
btnQuitter.setBounds(350, 217, 114, 25);
btnQuitter.setActionCommand("quitter");
btnQuitter.addActionListener(controleur);
btnQuitter.setVisible(true);
frame.getContentPane().add(btnQuitter);
textArea = new JTextArea();
textArea.setBounds(42, 44, 375, 161);
frame.getContentPane().add(textArea);
}
}
```
MVCCharly JOUSSECharly JOUSSEhttps://framagit.org/c.jousse/slam4-realisation_maintenance_composants_logiciels/-/issues/23ControleurPrincipal.java2019-11-09T13:03:02ZCharly JOUSSEControleurPrincipal.java```java
package controleur;
import vue.MaVue;
import dao.DAO;
import dao.ClubDAO;
import dao.LicencieDAO;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.List;
impo...```java
package controleur;
import vue.MaVue;
import dao.DAO;
import dao.ClubDAO;
import dao.LicencieDAO;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.util.ArrayList;
import java.util.List;
import javax.swing.JPanel;
import classes.Club;
import classes.Licencie;
import vue.MaVue;
public class ControleurPrincipal implements ActionListener {
// définition de l’objet instance de MaVue (vue principale)
private MaVue vue;
public void setVue(MaVue vue) {
this.vue = vue;
ListClub = gestionClub.recupAll();
this.vue.remplirComboClub(ListClub);
}
// déclaration des objets Modele qui permettront d’obtenir ou de transmettre les données :
private DAO<Club> gestionClub;
private DAO<Licencie> gestionLicencie;
// déclarations des éventuelles propriétés utiles au contrôleur
List<Club> ListClub = new ArrayList<Club>();
// Constructeur
public ControleurPrincipal()
{
this.gestionClub= new ClubDAO();
this.gestionLicencie= new LicencieDAO();
// + initialisations éventuelles autres propriétés définies dans cette classe
}
@Override
public void actionPerformed(ActionEvent e)
// Méthode qu'il faut implémenter
{
if (e.getActionCommand().equals("SlctClub"))
{
Affichage();
}
// quand on clique sur Quitter
if (e.getActionCommand().equals("quitter"))
{
Quitter(); // déconnection bdd et arrêt de l’application
}
// si on clique sur le bouton enregistrer (un nouveau licencié)
else if (e.getActionCommand().equals("ajouter"))
{
// insertion d’un nouveau licencié dans la bdd en récupérant les données de la vue
//gestionClub.create(obj);
// retour à la vue avec mise à jour des licenciés du club dans la zone prévue
}
// si un autre évènement est à l’origine de l’appel au contrôleur
else if (e.getActionCommand().equals( "xxxxx" )) {
}
}
public void Quitter() {
System.exit(0);
}
public void Affichage() {
int index = vue.comboBox.getSelectedIndex() - 1;
if (index>=0)
vue.AffichageDonnee(gestionLicencie.recupAllByClub(ListClub.get(index)));
}
}
```
MVCCharly JOUSSECharly JOUSSEhttps://framagit.org/c.jousse/slam4-realisation_maintenance_composants_logiciels/-/issues/25point_entree.java2019-11-09T13:13:04ZCharly JOUSSEpoint_entree.java```java
package controleur;
import vue.MaVue;
public class point_entree {
public static void main(String[] args) {
ControleurPrincipal leControleur = new ControleurPrincipal() ;
MaVue laVue = new MaVue(leControleur);
leControle...```java
package controleur;
import vue.MaVue;
public class point_entree {
public static void main(String[] args) {
ControleurPrincipal leControleur = new ControleurPrincipal() ;
MaVue laVue = new MaVue(leControleur);
leControleur.setVue(laVue);
}
}
```MVCCharly JOUSSECharly JOUSSEhttps://framagit.org/c.jousse/slam4-realisation_maintenance_composants_logiciels/-/issues/26Les Tests Unitaires2019-11-26T11:09:55ZCharly JOUSSELes Tests Unitaires6) A l'aide du diagramme ainsi obtenu, déterminer alors quelle est la classe en charge de la
contrainte d'unicité des id.
`GestionAjoutUsers` avec la methode `genereId(String, String)`
Voici l'ensemble de mes fichiers en format zip :
...6) A l'aide du diagramme ainsi obtenu, déterminer alors quelle est la classe en charge de la
contrainte d'unicité des id.
`GestionAjoutUsers` avec la methode `genereId(String, String)`
Voici l'ensemble de mes fichiers en format zip :
[TestUnitaire_Charly_.zip](/uploads/443373959b5015e088675abbafd6a863/TestUnitaire_Charly_.zip)Charly JOUSSECharly JOUSSEhttps://framagit.org/c.jousse/slam4-realisation_maintenance_composants_logiciels/-/issues/27JQueryMobile2019-12-03T11:15:32ZCharly JOUSSEJQueryMobile1- En ouvrant les différents répertoires + le fichier index.php , indiquer et expliquer les fonctionnalités de chacun d'entre eux dans une architecture MVC.
| Dossier | fonctionnalité MVC |
| ------ | ------ |
| ajax | Controleur |
| im...1- En ouvrant les différents répertoires + le fichier index.php , indiquer et expliquer les fonctionnalités de chacun d'entre eux dans une architecture MVC.
| Dossier | fonctionnalité MVC |
| ------ | ------ |
| ajax | Controleur |
| image | Vue |
| js | Controleur |
| util | Modele |
| vues | Vue |
2- Indiquer en quoi ce comportement est particulier. Dire ce que JQM fait. Préciser quelle balise et quel attribut jouent un rôle très important dans ce fonctionnement.
```php
<div data-role="page" id="pagemenuaccueil">
```
3- Quelle est la valeur de data-role dans chacun de ces 2 fichiers ?
<div data-role="header" data-theme="b">
<div data-role="footer" data-theme="b">
4- Quelle est la valeur de data-theme dans l’application ?
```
data-theme="b"
```
6- Que constatez-vous ? Quelle explication peut-on envisager ?
Une modification dans le css
9- Dans quel fichier est traité cet appel ?
`traiterconnexiopn.php`
Combien d’arguments la fonction Ajax fournit-elle et à quelle fonction (= quelle fonction est
appelée) ?
```
verifuser($login, $mdp);
```
Ensuite, dans la fonction foncRetourConnexion , que peut contenir le paramètre data et d’où
provient sa valeur ?
`c'est l'id de la page, `
Finalement, quelle page est chargée ? Elle provient de quel fichier ?
`pagemenuaccueil.php`
Question 1
– Vers quelle page allez-vous logiquement fixer l'accueil ?
`pageconnexion.php`
– Dans quel fichier faut-il faire cette amélioration ?
`entetePage2.php`Charly JOUSSECharly JOUSSEhttps://framagit.org/c.jousse/slam4-realisation_maintenance_composants_logiciels/-/issues/28TP2 : Base de données locales SQLite avec Android2020-03-17T11:12:47ZCharly JOUSSETP2 : Base de données locales SQLite avec AndroidPartie 1 : Base de données
A.0) Elle herite de SQLiteOpenHelper
A.1 et A.2) Le rôle de la fonction onCreate() permet d'ajouter un élément à la bdd, avec comme nom Badoz, prénom Benoit, ville Poligny et le niveau. De 30 à 35 c'est aussi...Partie 1 : Base de données
A.0) Elle herite de SQLiteOpenHelper
A.1 et A.2) Le rôle de la fonction onCreate() permet d'ajouter un élément à la bdd, avec comme nom Badoz, prénom Benoit, ville Poligny et le niveau. De 30 à 35 c'est aussi une insertion mais d'une autre manière. Cette méthode est exécuté dans le MainActivity.java
A.3) Cette fonction est appelé lors de mettre à jours la base de donnée.
A.4) Creation de la table viticulteur(id, nom, prenom, ville, niveau)
Clé primaire : id.
A.5) Le rôle de la classe BdSQLiteOpenHelper permet de configurer la bdd avec la methode CRUD (Create, Read, Update, Delete),
Context : permet de trouver le chemin de la bdd
name : le nom de la bdd
factory : une sous classe de la classe Cursor
version : version de la bdd
B.1) création de la base – accès en lecture – interrogation de la base et traitement du résultat obtenu.
B.2) exécution de la requete SQL passée en paramètre. rawQuery retourne un résultat sous forme de curseur / execSQL() ne retourne pas de résultat.
B.3)
```java
while (!curseur.isAfterLast()) {
nomV = curseur.getString(1);
prenomV = curseur.getString(2);
villeV = curseur.getString(3);
niveauV = curseur.getInt(4);
Log.d("methode1", nomV + " "+ prenomV + " "+ villeV + " " + niveauV);
curseur.moveToNext();
}
```
B.4) BD1 : BdSQLiteOpenHelper.java et BD2 : Viticuleur.java
C.1) Ces deux methodes font un ajout en bdd, on récupère le nom du viticulteur et le niveau.
C.2) La différence c'est l’exécution de la requête, dans la première méthode cela se fait à la fin et la deuxième méthode au début ce qu'on appelle une requête préparé
C.3) ret : Provient du debut de la fonction, et retourne le résultat de la requete
C.4) Peut servir à tester l'insertion ou réutiliser l'ID de la nouvelle ligne.
C.5) long
C.6) A cause de getWritableDatabase() et getReadableDatabase
Charly JOUSSECharly JOUSSEhttps://framagit.org/c.jousse/slam4-realisation_maintenance_composants_logiciels/-/issues/29TP : Android2020-03-27T11:24:21ZCharly JOUSSETP : AndroidMainActivity.java
```java
package com.example.edf_jousse;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widge...MainActivity.java
```java
package com.example.edf_jousse;
import androidx.appcompat.app.AppCompatActivity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.ImageButton;
import android.widget.Toast;
import java.util.ArrayList;
public class MainActivity extends AppCompatActivity implements View.OnClickListener {
ImageButton menu1;
ImageButton menu2;
ImageButton menu3;
ImageButton menu4;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//testBD();
menu1 = (ImageButton) this.findViewById(R.id.ib1);
menu1.setOnClickListener(this);
menu2 = (ImageButton) this.findViewById(R.id.ib2);
menu2.setOnClickListener(this);
menu3 = (ImageButton) this.findViewById(R.id.ib3);
menu3.setOnClickListener(this);
menu4 = (ImageButton) this.findViewById(R.id.ib4);
menu4.setOnClickListener(this);
}
@Override
public void onClick(View view){
switch (view.getId()) {
case R.id.ib1:
/*Intent intentClient = new Intent(this,ClientActivity.class);
this.startActivityForResult(intentClient,0);*/
break;
case R.id.ib2:
Intent intentClient = new Intent(this,AfficheListeClient.class);
this.startActivity(intentClient);
break;
case R.id.ib3:
Toast.makeText(this, "En cours de dev", Toast.LENGTH_LONG).show();
break;
case R.id.ib4:
Toast.makeText(this, "En cours de dev", Toast.LENGTH_LONG).show();
break;
}
}
public void testBD(){
Log.i("TEST","<========================================= Début TestBD ===================================================");
ClientDAO ClientAcces = new ClientDAO(this);
Log.i("TEST","Arrivée dans TestBD....");
//Récupération list client
ArrayList<Client> lesClients = ClientAcces.getClient("%");
for (Client unClient : lesClients) {
Log.i("TEST","récupération liste client...= "+ unClient.getNom());
}
//Ajout d'un clients
Client leClient1 = new Client(1,"testnom","testPrenom","TestAdresse","00000","testVille","0600000000","AAA",1.1,"00.00.0000");
ClientAcces.addClient1(leClient1);
//Récupération d'un client
Client leClientRecup = ClientAcces.getClient(1);
Log.i("TEST","récupération client N1...= "+ leClientRecup.getNom());
//Récupération list clients
lesClients = ClientAcces.getClient("%");
for (Client unClient : lesClients) {
Log.i("TEST","récupération liste client...= "+ unClient.getNom());
}
Log.i("TEST","<========================================= Fin TestBD ===================================================\");");
}
}
```
# ClientAdapter.java
```java
package com.example.edf_jousse;
import android.content.Context;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.BaseAdapter;
import android.widget.TextView;
import java.util.ArrayList;
import java.util.List;
public class ClientAdapter extends BaseAdapter {
List<Client> listClient;
LayoutInflater layoutInflater;
@Override
public int getCount() {
return 0;
}
@Override
public Object getItem(int position) {
return listClient.get(position);
}
@Override
public long getItemId(int position) {
return 0;
}
@Override
public View getView(int position, View convertView, ViewGroup parent) {
ViewHolder holder;
if(convertView == null){
holder = new ViewHolder();
convertView = layoutInflater.inflate(R.layout.vue_client, null);
holder.textViewId = (TextView) convertView.findViewById (R.id.vueIdentidiant);
holder.TextViewNom = (TextView) convertView.findViewById (R.id.vueNom);
holder.TextViewPrenom = (TextView) convertView.findViewById (R.id.vuePrenom);
holder.TextViewTelephone = (TextView) convertView.findViewById (R.id.vueTI);
holder.TextViewAdresse = (TextView) convertView.findViewById (R.id.vueAdresse);
holder.TextViewCodePostale = (TextView) convertView.findViewById (R.id.vueCp);
holder.TextViewVille = (TextView) convertView.findViewById (R.id.vueVille);
convertView.setTag(holder);
} else {
holder = (ViewHolder) convertView.getTag();
}
holder.textViewId.setText(""+listClient.get(position).getIdentifiant());
holder.textViewId.setText(""+listClient.get(position).getNom());
holder.textViewId.setText(""+listClient.get(position).getPrenom());
holder.textViewId.setText(""+listClient.get(position).getTelephone());
holder.textViewId.setText(""+listClient.get(position).getAdresse());
holder.textViewId.setText(""+listClient.get(position).getCodePostal());
holder.textViewId.setText(""+listClient.get(position).getVille());
return convertView;
}
public ClientAdapter(Context context, List<Client> listClient) {
this.layoutInflater = LayoutInflater.from(context);
this.listClient = listClient;
}
}
class ViewHolder {
TextView textViewId;
TextView TextViewNom;
TextView TextViewPrenom;
TextView TextViewTelephone;
TextView TextViewAdresse;
TextView TextViewCodePostale;
TextView TextViewVille;
}
```
AfficheListeClient.java
```java
package com.example.edf_jousse;
import androidx.appcompat.app.AppCompatActivity;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.AdapterView;
import android.widget.ListView;
import java.util.ArrayList;
import java.util.List;
public class AfficheListeClient extends AppCompatActivity implements AdapterView.OnItemClickListener{
private ListView listView;
List<Client> listeClient = new ArrayList<Client>();
ClientDAO clientDAO = new ClientDAO(this);
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_affiche_liste_client);
listView = (ListView)findViewById(R.id.lvListe);
listeClient = clientDAO.getClients();
listView.setOnItemClickListener(this);
ClientAdapter clientAdapter = new ClientAdapter(this, listeClient);
listView.setAdapter(clientAdapter);
for(Client c : listeClient){
Log.i("test",c.getNom());
}
}
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
}
}
```Charly JOUSSECharly JOUSSEhttps://framagit.org/c.jousse/slam4-realisation_maintenance_composants_logiciels/-/issues/30séances avril 2020 : Projet React2020-04-10T08:42:44ZCharly JOUSSEséances avril 2020 : Projet ReactCode présent sur le git de SLAM_4
React (aussi appelé React.js ou ReactJS) est une bibliothèque JavaScript libre crée par Facebook
10/04/2020 :
Aujourd'hui j'ai continué le cours sur openclassrooms sur REACT , et j'ai vue JSX, fonct...Code présent sur le git de SLAM_4
React (aussi appelé React.js ou ReactJS) est une bibliothèque JavaScript libre crée par Facebook
10/04/2020 :
Aujourd'hui j'ai continué le cours sur openclassrooms sur REACT , et j'ai vue JSX, fonctionne avec des balises et permet de simplifier, de clarifié le code. J'ai regardé les vidéos du cours et lu le coursCharly JOUSSECharly JOUSSE