m1gwings / ing-sw-cheatsheet

Cheatsheet per l'esame (open book) di Ingegneria del Software del Politecnico di Milano. A. A. 2022/2023.
MIT License
7 stars 5 forks source link

Capitolo sul JML #12

Open m1gwings opened 1 year ago

m1gwings commented 1 year ago

(WIP: ci sta già lavorando @m1gwings ) Paragrafi da scrivere:

Furrrlo commented 1 year ago

Li scrivo qui perché ho visto che li stai già scrivendo quindi magari ti servono:

m1gwings commented 1 year ago

Sì, grazie mille! Ci stavo lavorando proprio ora. Alcune "porzioni di specifica" ho cercato di scriverle per una Collection in generale in modo che siano riciclabili sia per i Set che per le List.

Furrrlo commented 1 year ago

Bisogna stare attenti che però le liste devono mantenere l'ordine, mentre i set no. Io non sono riuscito a farli generici 😭

m1gwings commented 1 year ago

Sí certamente. Infatti per alcune specifiche ho dovuto fare riferimento esplicitamente alle List o ai Set. Peró ad esempio quelle per l'inserimento o la rimozione di un elemento da una collezione le ho fatte anche generiche (perché a volte non è richiesto che la lista mantenga l'ordine).

m1gwings commented 1 year ago

Comunque effettivamente, adesso che mi ci fai pensare, dovrei specificare esplicitamente che quello non conserva l'ordine nel caso delle List. (L'ho messo tra i TODO)

Furrrlo commented 1 year ago

Eh sì perché tipo https://github.com/m1gwings/ing-sw-cheatsheet/blob/main/jml.md#L665-L670 non va bene per le liste, perché devi anche controllare che l'ordine della lista non venga modificato, quindi dovresti anche fare \forall int i; i >= 0 && i < j; list.get(i).equals(list.get(i)) e \forall int i; i > j && i < \old(list.size()); list.get(i - 1).equals(\old(list.get(i))) con j indice dell'elemento da rimuovere

m1gwings commented 1 year ago

Sì sì hai ragione. Quando l'ho scritto ricordavo che in più TdE ci fossero liste dove non c'è un ordine specificato, ed in quel caso mi risultava più comodo scrivere quello generico per la collezione in modo da risparmiare un po' di spazio. In realtà ho controllato al volo i TdE degli ultimi 2 anni e succede solo 1 volta nel TdE del 2021-07-13 dove getByArtist restituisce una lista senza un ordine particolare. Quindi in definitiva appena ci rimetto mano lo tolgo (anzi lo converto in quello per i Set) e metto quello per le List a parte come dicevi giustamente tu.