https://github.com/heig-vd-progserv1-course
Support de cours · Présentation (web) · Présentation (PDF)
L. Delafontaine, avec l'aide de GitHub Copilot.
Ce travail est sous licence CC BY-SA 4.0.
Cette présentation est un résumé du support de cours. Pour plus de détails, consultez le support de cours.
Il existe d'autres concepts, mais ils ne seront pas abordés dans ce cours :
class
JeSuisUneClasse
<?php class Person { public $name; public $age; }
// Équivalent en Java public class Person { public String name; public int age; }
new
()
$jeSuisUnObjet
$person1 = new Person(); $person2 = new Person();
// Équivalent en Java Person person1 = new Person(); Person person2 = new Person();
public
protected
private
->
<?php class Person { public $name; public $age; } $person = new Person(); $person->name = "Alice"; $person->age = 30; echo $person->name . "<br>"; echo $person->age;
// Équivalent en Java public class Person { public String name; public int age; } Person person = new Person(); person.name = "Alice"; person.age = 30; System.out.println(person.name); System.out.println(person.age);
$this
<?php class Person { public $name; public $age; public function greet() { return "Hi, my name is " .$this->name . " and I am " . $this->age . " years old."; } } $person = new Person(); $person->name = "Alice"; $person->age = 30; echo $person->greet();
// Équivalent en Java public class Person { public String name; public int age; public String greet() { return "Hi, my name is " + this.name + " and I am " + this.age + " years old."; } } Person person = new Person(); person.name = "Alice"; person.age = 30; System.out.println(person.greet());
<?php class Person { private $name; // Attribut privé private $age; // Attribut privé public function setName($name) { if (strlen($name) < 3) { return "Name must be at least 3 characters long."; } $this->name = $name; }
public function getName() { return $this->name; } public function setAge($age) { if ($age < 0) { return "Age cannot be negative."; } $this->age = $age; } public function getAge() { return $this->age; } }
$person = new Person(); $error = $person->setName("Alice"); if (!empty($error)) { echo $error . "<br>"; } $error = $person->setAge(30); if (!empty($error)) { echo $error . "<br>"; } echo $person->getName() . "<br>"; // Affiche "Alice" echo $person->getAge() . "<br>"; // Affiche 30
$error = $person->setName("AS"); if (!empty($error)) { echo $error . "<br>"; } $error = $person->setAge(-1); if (!empty($error)) { echo $error . "<br>"; } $person->name = "Bob"; // Erreur : l'attribut est privé
// Équivalent en Java public class Person { private String name; // Attribut privé private int age; // Attribut privé public String setName(String name) { if (name.length() < 3) { return "Name must be at least 3 characters long."; } this.name = name; return null; }
public String getName() { return this.name; } public String setAge(int age) { if (age < 0) { return "Age cannot be negative."; } this.age = age; return null; } public int getAge() { return this.age; } }
Person person = new Person(); String error = person.setName("Alice"); if (error != null) { System.out.println(error); } error = person.setAge(30); if (error != null) { System.out.println(error); } System.out.println(person.getName()); // Affiche "Alice" System.out.println(person.getAge()); // Affiche 30
error = person.setName("AS"); if (error != null) { System.out.println(error); } error = person.setAge(-1); if (error != null) { System.out.println(error); } person.name = "Bob"; // Erreur : l'attribut est privé
<?php class Person { private $name; private $age; public function __construct($name, $age) { $this->name = $name; $this->age = $age; } public function __destruct() { echo $this->name . " is being destroyed.<br>"; } public function greet() { return "Hi, my name is " . $this->name . " and I am " . $this->age . " years old."; } }
$alice = new Person("Alice", 30); $bob = new Person("Bob", 25); $evelyn = new Person("Evelyn", 40); echo $alice->greet() . "<br>"; echo $bob->greet() . "<br>"; echo $evelyn->greet() . "<br>"; // L'objet `$bob` a maintenant la valeur `null`. // L'objet est donc détruit et le destructeur est appelé. $bob = null; // L'objet `$evelyn` référence maintenant le même objet que `$alice`. // L'objet `$evelyn` n'est plus utilisé et est donc détruit. $evelyn = $alice; // L'objet `$alice` sera automatiquement détruit à la fin du script. // Son destructeur sera appelé.
Pas de destructeur explicite comme en PHP.
// Équivalent en Java public class Person { private String name; private int age; public Person(String name, int age) { this.name = name; this.age = age; } public String greet() { return "Hi, my name is " + this.name + " and I am " + this.age + " years old."; } }
Person alice = new Person("Alice", 30); Person bob = new Person("Bob", 25); Person evelyn = new Person("Evelyn", 40); System.out.println(alice.greet()); System.out.println(bob.greet()); System.out.println(evelyn.greet()); // En Java, il n'y a pas de destructeur explicite. // Mais tout objet avec une valeur `null` est éligible pour le garbage collector. bob = null; // L'objet `evelyn` référence maintenant le même objet que `alice`. // L'objet `evelyn` n'est plus utilisé et sera éligible pour le garbage collector. evelyn = alice; // L'objet `alice` sera éligible pour le garbage collector à la fin du programme.
::
MA_CONSTANTE
<?php class Person { const ROLE_MANAGER = 'Manager'; const ROLE_DEVELOPER = 'Developer'; const ROLE_DESIGNER = 'Designer'; const ROLE_EMPLOYEE = 'Employee'; private $name; private $role; public function __construct($name, $role) { $this->name = $name; $this->role = $role; } public function greet() { return "Hi, my name is " . $this->name . ". I work as a " . $this->role . " at my company."; } }
$alice = new Person("Alice", Person::ROLE_DEVELOPER); $bob = new Person("Bob", Person::ROLE_MANAGER); $evelyn = new Person("Evelyn", Person::ROLE_DESIGNER); // Affiche "Hi, my name is Alice. I work as a Developer at my company." echo $alice->greet() . "<br>"; // Affiche "Hi, my name is Bob. I work as a Manager at my company." echo $bob->greet() . "<br>"; // Affiche "Hi, my name is Evelyn. I work as a Designer at my company." echo $evelyn->greet();
// Équivalent en Java public class Person { public static final String ROLE_MANAGER = "Manager"; public static final String ROLE_DEVELOPER = "Developer"; public static final String ROLE_DESIGNER = "Designer"; public static final String ROLE_EMPLOYEE = "Employee"; private String name; private String role; public Person(String name, String role) { this.name = name; this.role = role; } public String greet() { return "Hi, my name is " + this.name + ". I work as a " + this.role + " at my company."; } }
Person alice = new Person("Alice", Person.ROLE_DEVELOPER); Person bob = new Person("Bob", Person.ROLE_MANAGER); Person evelyn = new Person("Evelyn", Person.ROLE_DESIGNER); // Affiche "Hi, my name is Alice. I work as a Developer at my company." System.out.println(alice.greet()); // Affiche "Hi, my name is Bob. I work as a Manager at my company." System.out.println(bob.greet()); // Affiche "Hi, my name is Evelyn. I work as a Designer at my company." System.out.println(evelyn.greet());
Est-ce que vous avez des questions ?
Le formulaire de feedback vous permet de partager votre retour sur l'unité d'enseignement "ProgServ1".
Il ne prend que quelques minutes et est anonyme. Vous pouvez aussi y demander un/des cours d'appui.
Les résultats seront discutés au prochain cours. Merci beaucoup !
Entraidez-vous si vous avez des difficultés !
URLs
Illustrations