BILAGA F till Programvaruprojekt BRISTFÄLLIGT GRÄNSSNITT. multipc_logic_c Rev 1.
|
|
- Christoffer Dahlberg
- för 9 år sedan
- Visningar:
Transkript
1 BRISTFÄLLIGT GRÄNSSNITT 1(6) BILAGA F till Programvaruprojekt BRISTFÄLLIGT GRÄNSSNITT. multipc_logic_c Rev 1. Gränssnittet öppnar för att anropas på fel sätt. Jämför med delkapitlet om gränssnittstest i bokens del 3. Förbättrad variant av gränssnittet visas i bilaga G. Fetstil indikerar funktion som modifieras i Rev 2, bilaga G. #ifndef MULTIPC_LOGIC_C_H #define MULTIPC_LOGIC_C_H ========================================================== Fil : multipc_logic_c.h Författare: Håkan Lindegren MultiPC Historik : Rev 1 ========================================================== #include "problem_generator_c.h" #include "answers_log_c.h" #include "detailed_answers_log_c.h" #include "statistics_log_c.h" #include "multidb_c.h" Konstanter för felhantering vid läsning och skrivning av elevnamn typedef enum { DB_OK, DB_CORRUPT, WRITE_FAILED, DB_FULL } db_status_t; class multipc_logic_c { public: Ska returnera en unik instans av multipc_logic_c Parametrar: INGA Retur: Pekare till unik instans Felhantering: INGEN static multipc_logic_c *get_instance(); Returnerar status för elev DB För anrop INNAN get_first_pupil/get_next_pupil Parametrar: INGA Retur: Status hos elev DB: DB_OK eller DB_CORRUPT
2 BRISTFÄLLIGT GRÄNSSNITT 2(6) Felhantering: Via statusvärdet Om status är DB_CORRUPT kommer ny och tom elevfil att skapas. Anroparen kan sedan fortsätta. Jämför med detaljkraven under db_status_t get_db_status(); För att loopa över och läsa in elevnamn Parametrar: first_name: för lagring av elevs förnamn, minst 40 tecken last_name: för lagring av elevs efternamn, minst 40 tecken item_found: sätts till 1 om elev fanns, 0 annars Retur: item_found = 1 ==> det fanns en elev, namn lagrade i first_name och last_name item_found = 0 ==> Ingen elev, övriga param oförändrade Felhantering: INGEN void get_first_pupil( char last_name[], void get_next_pupil( char last_name[], Sätter aktuell elev Parametrar: first_name: elevens förnamn, max 40 tecken last_name: elevens efternamn, max 40 tecken Retur: INGEN Felhantering: INGEN void set_pupil( char last_name[] ); Ger tillbaka namn på aktuell elev Parametrar: first_name: elevens förnamn, minst 40 tecken last_name: elevens efternamn, minst 40 tecken Retur: Namndata i first_name och last_name Felhantering: INGEN void get_pupil( char last_name[] ); För lagring av nytt elevnamn Sätter också aktuell elev, d.v.s. anropar set_pupil Parametrar: first_name: elevens förnamn, max 40 tecken last_name: elevens efternamn, max 40 tecken db_status: sätts till DB_OK om det gick bra
3 BRISTFÄLLIGT GRÄNSSNITT 3(6) Retur: db_status = DB_OK ==> skrivning gick bra db_status = WRITE_FAILED ==> skrivning misslyckades, elev EJ lagrad db_status = DB_FULL ==> redan fullt i elev-db elev EJ lagrad Felhantering: Via db_status void store_name( char last_name[], db_status_t &db_status ); För inställning av tabell Parametrar: table: heltal inom [1.. 10] Retur: INGEN Felhantering: INGEN void set_table( int table ); Returnerar inställd tabell Parametrar: INGA Retur: Vald tabell, ett heltal inom [1.. 10] Felhantering: INGEN int get_table(); Ska ge nästa framslumpade problem Parametrar: operand_a: får värdet av första operanden operand_b: får värdet av andra operanden Retur: operand_a inom [1.. 10], operand_b = aktuell tabell Felhantering: INGEN void get_next_problem( int &operand_b ); Rensar den interna svarsloggen För anrop innan ett prov startar Parametrar: INGA Retur: INGEN Felhantering: INGEN void clear_answers(); För lagring av ett besvarat tal Parametrar: operand_a: värdet av första operanden [1.. 10]
4 BRISTFÄLLIGT GRÄNSSNITT 4(6) operand_b: värdet av andra operanden [1.. 10] answer: svaret [ ] elapsed_time: förfluten tid innan svaret Retur: INGEN Felhantering: INGEN void store_answer( int operand_a, int operand_b, int answer, int elapsed_time); För att loopa över de givna svaren i ett prov Parametrar: operand_a: får värdet av första operanden [1.. 10] operand_b: får värdet av andra operanden [1.. 10] answer: får svaret [ ] elapsed_time: får förfluten tid innan svaret correct_answer: får korrekt svar [ ] item_found: sätts till 1 om svar fanns, 0 annars Retur: item_found = 1 ==> svar fanns, data lagrade i övriga param item_found = 0 ==> Inget svar, övriga param oförändrade Felhantering: INGEN void get_first_answer( int &elapsed_time, void get_next_answer( int &elapsed_time, För att loopa över statistiken i vald tabell Parametrar: operand_a: får värdet av första operanden [1.. 10] operand_b: får värdet av andra operanden [1.. 10] no_of_answers: får antal avgivna svar på talet no_of_correct_answers: får antal korrekta svar [0.. no_of_answers] item_found: sätts till 1 om statistik fanns, 0 annars Retur: item_found = 1 ==> statistik fanns, data i övriga param item_found = 0 ==> Ingen statistik, övriga param oförändrade Felhantering: INGEN void get_first_stats( int &no_of_answers, int &no_of_correct_answers, void get_next_stats(
5 BRISTFÄLLIGT GRÄNSSNITT 5(6) int &no_of_answers, int &no_of_correct_answers, För att ställa in aktuellt tal för detaljstatistiken Ska kombineras med set_table() Parametrar: operand_a: värdet av första operanden Retur: INGEN Felhantering: INGEN void set_details_number( int operand_a ); Returnerar inställt details_number Parametrar: INGA Retur: Inställd detaljoperand, ett heltal inom [1.. 10] Felhantering: INGEN int get_details_number(); För att loopa över detaljstatistik för vald tabell och valt detaljnummer Parametrar: answer: får svar som avgivits correct_answer: får korrekt svar item_found: sätts till 1 om svar fanns, annars 0 Retur: item_found = 1 indikerar att det fanns ytterligare svar item_found = 0 ==> Inget svar, övriga parametrar oförändrade Felhantering: INGEN void get_first_detail( void get_next_detail( private: Privat konstruktor, allt enligt Singleton multipc_logic_c(); Den unika instansen. Instansieras av get_instance(), allt enligt Singleton multipc_logic_c *unique_instance; Instansvariabler. Instansieras av konstruktorn
6 BRISTFÄLLIGT GRÄNSSNITT 6(6) }; problem_generator_c *problem_generator; answers_log_c *answers_log; detailed_answers_log_c *detailed_answers_log; statistics_log_c *statistics_log; multidb_c *multidb; #endif MULTIPC_LOGIC_C_H Kommentar Problemet med det här gränssnittet är att flera av funktionerna tar flera heltalsparametrar efter varandra. Om värdena kastas om vid anrop kommer inte kompilator eller länkare att protestera. Förhoppningsvis ger sådana misstag tydliga fel ut mot användaren. Få av funktionerna kontrollerar indata. Det är också en brist. Behöver man skriva det, att INGEN felhantering förekommer? Om det behövs kan alltid diskuteras. Då man gör det blir bristen tydlig. Samma mall har använts ovanför varje funktionshuvud. Det förenklar arbetet för en granskare som förväntar sig just den mallen.
Vad är ett objekt? Tillstånd och beteende. Vad är ett objekt? Exempel
Objekt Instansvariabler Instansmetoder Klassvariabler Klassmetoder Inkapsling Föreläsning 6 Vad är ett objekt? Ett objekt har egenskaper, som kallas för objektets attribut Egenskaperna beskriver tillsammans
Läs mer7 GRUNDERNA I PROGRAMMERING
Grunderna i programmering 7 GRUNDERNA I PROGRAMMERING Detta kapitel är bokens största kapitel och kanske det viktigaste. Vi kommer här att gå igenom grunderna för sekventiell programmering. Det vi går
Läs merNedan skapar vi klassen Person innehållande datamedlemmar för förnamn, efternamn, ålder, längd och vikt:
8. Objektorientering Skälet till att C++ är ett av de mest använda programspråken är att det är objektorienterat. Detta bygger vidare på begreppet struct (ursprungligen från språket C som inte är objektorienterat),
Läs merMetodanrop - primitiva typer. Föreläsning 4. Metodanrop - referenstyper. Metodanrop - primitiva typer
Föreläsning 4 Metodanrop switch-slingor Rekursiva metoder Repetition av de första föreläsningarna Inför seminariet Nästa föreläsning Metodanrop - primitiva typer Vid metodanrop kopieras värdet av en variabel
Läs merHeltal(int) Programmeringsteknik 54
Heltal(int) Datatypen int används tillsammans med char, short int och long int för att lagra heltal i C. Matematisk sett finns det oändligt många heltal. På en dator måste det införas en begränsning på
Läs merTillgång till patienter vid annan enhet hantering i BORIS
i Sverige Tillgång till patienter vid annan enhet hantering i BORIS I detta dokument beskrivs hur man i BORIS hanterar patienter som behöver göras tillgängliga för flera enheter i BORIS, pga. att de remitteras
Läs merHur använder du som elev Fronter?
Hur använder du som elev Fronter? Fronter är en lärplattform. Det är ett digitalt verktyg som du som elev ska använda dig av för att hitta uppgifter, länkar och dokument från alla dina lärare, lämna in
Läs mer3.3 for-satsen. Programmering, grundkurs, 8.0 hp, Elektro, KTH, hösten 2010. Föreläsning 3
Föreläsning 3 3.3 for-satsen I programmering talar man om tre sätt på vilket ett programflöde kan vara beskaffat: 1. Saker kan hända efter varandra, i sekvens. 2. Flödet kan innebära att ett val görs,
Läs merProblemlösarna har fyra konkreta tips på vad som gör ett lyckat studiebesök:
Problemlösarna har fyra konkreta tips på vad som gör ett lyckat studiebesök: 1. Var medveten om vilken målgruppen är I Problemlösarna är det elever i årskurs 8-9 som är målgruppen. Många ungdomar i den
Läs merTitel. En kort sammanfattning av arbetet (max 5 meningar) eller en underrubrik skrivs under titeln. Johannes Hedbergsgymnasiet Helsingborg
Johannes Hedbergsgymnasiet Helsingborg Håll framsidan så enkel som möjligt! Den ser tråkig ut utan bild, men framsidan på större arbeten ska endast innehålla text och vara informativ! Placera skolans logotype
Läs merPROV. 10 Uppräknade datatyper
10 10.1 10.2 Definition 10.3 Användning och regler 10.4 switch-satsen 10.5 Iteration över samtliga värden 10.6 Instansvariabler och instanstjänster 10.7 Värdespecifika implementationer 10.1 Hur ser vi
Läs merIntroduktion till Planering
Introduktion till Planering Planering är ett verktyg för lärare att skapa planeringar. Läraren skapar planeringen och kopplar den till en undervisningsgrupp som finns i schemat. När planeringen kopplas
Läs merChecklista. Hur du enkelt skriver din uppsats
Checklista Hur du enkelt skriver din uppsats Celsiusskolans biblioteksgrupp 2013 När du skriver en uppsats är det några saker som är viktiga att tänka på. Det ska som läsare vara lätt att få en överblick
Läs merUtvecklingssamtalet Hur går det för ditt barn i skolan?
Utvecklingssamtalet Hur går det för ditt barn i skolan? Utvecklingssamtalet En gång varje termin ska du och ditt barn träffa läraren eller klassföre ståndaren för att ha ett utvecklingssamtal. Samtalet
Läs mer3. Författare: Ange samtliga författare. Gör så här:
Gör så här: 1. Logga in i DiVA http://kau.diva-portal.org/login med ditt Net ID (studentkonto). 2. Välj publikationstyp: Studentuppsats (Examensarbete) är förvald. Klicka på fortsätt. Du kan alltid spara
Läs merRIKTLINJER & REGLER KRING SOCIALA MEDIER FÖR GISLAVEDS KOMMUN
RIKTLINJER & REGLER KRING SOCIALA MEDIER FÖR GISLAVEDS KOMMUN ANTAGEN AV KOMMUNSTYRELSEN 2015-02-25 Om sociala medier Det finns flera definitioner av vad begreppet sociala medier står för. I det digitala
Läs merUTBILDNINGSFÖRVALTNINGEN IKT-FUNKTIONEN
UTBILDNINGSFÖRVALTNINGEN IKT-FUNKTIONEN UTREDNING Projekt: Författare: Version: Elever i behov av särskilt IT-stöd v3.3.017 Förvaltning/avdelning: Godkänd av beställare: Senast ändrad: Utbildningsförvaltningen,
Läs merTITEL. Johannes Hedberggymnasiet. Laborantens namn: Medlaboranters namn: Klass: Skola: Påbörjad: Inlämnad:
Johannes Hedberggymnasiet Ha gärna med skolans namn högst upp i vänstra hörnet, det ger framsidan lite guldkant Johannes Hedbergloggan är väldigt snygg att ha uppe i hörnet. Kopiera gärna denna. TITEL
Läs merEkonomiavdelningen 2013-04-12. Åtgärda en faktura
Åtgärda en faktura När du har fakturor hos dig för åtgärd ser du det genom att klicka på menyn Under Uppgifter arbetsflöde visas de antal fakturor som finns för behandling. Antalet fakturor framgår inom
Läs merSå surfar du säkrare 2 Skydda surfvanor på din dator 2 Skydda det du skickar 4 Skydda din identitet 4
Sus Andersson Så surfar du säkrare Så surfar du säkrare 2 Skydda surfvanor på din dator 2 Skydda det du skickar 4 Skydda din identitet 4 Digitalt Källskydd - en introduktion Sus Andersson, Fredrik Laurin
Läs mer18 Eldorado 4 A Lärarbok Undervisning att skapa förutsättningar för elevers lärande
Undervisning att skapa förutsättningar för elevers lärande Eleverna behöver få möta aktiviteter där de får möjlighet att konkret uppleva ett nytt begrepp eller en ny metod, reflektera gemensamt och med
Läs merWord och Excel. - en kort handledning Av Dag Kihlman och Martin Gellerstedt
Word och Excel - en kort handledning Av Dag Kihlman och Martin Gellerstedt Innehållsförteckning 1 Microsoft Word... 1 1.1 Formatering av stilar (eller rättare sagt formatmallar)... 1 1.1.1 Vad är en formatmall?...
Läs merRådgivning inom livsmedelskontrollen
Rådgivning inom livsmedelskontrollen FÖR FÖRETAGARE 2 Inledning I våra möten med er livsmedelsföretagare ser vi att det finns efterfrågan på mer rådgivning och information från kontrollmyndigheterna. Samtidigt
Läs merEPiServer 7.5 CMS. Användarhandbok för administratörer
EPiServer 7.5 CMS Användarhandbok för administratörer Användarhandbok för administratörer EPiServer 7.5 CMS Utgåva A, 2013 Innehållsförteckning 3 Innehållsförteckning Innehållsförteckning 3 Introduktion
Läs merTIPS OCH TRIX MED ENTERPRISE GUIDE JESPER ARNFLO NORDIN BI-KONSULT, SAS XPERIENCE
TIPS OCH TRIX MED ENTERPRISE GUIDE JESPER ARNFLO NORDIN BI-KONSULT, SAS XPERIENCE ÖVERBLICK 10 inställningar I Enterprise Guide 3 tips för processflöden Utforska med Data Explorer 5 användbara kortkommandon
Läs merAtt arrangera en studiecirkel Läkemedel och äldre
Att arrangera en studiecirkel Läkemedel och äldre Förslag till upplägg av en studiecirkel Studiecirkeln är en grupp om minst tre personer med gemensamt intresse för det aktuella ämnet. Cirkelledaren håller
Läs merDu startar Jag Vill genom öppna mappen och klicka på programfilen Jag_Vill
Börja med att placera mappen med JagVill på Skrivbordet. Byt namn på mappen till något passande 12 oktober Man klickar på en av de 8 rutorna och då kan en röst spelas upp om man lagt in en sådan t ex till
Läs merElektronisk personvåg med kroppsanalys
B R U K S A N V I S N I N G Elektronisk personvåg med kroppsanalys Artikelnummer 9530-1485 1 Elektronisk personvåg med kroppsanalys Artikelnummer 9530-1485 Förutom vikt mäter vågen kroppsfett, vattenhalt,
Läs merATT UNDERVISA MULTIPLIKATION OCH DIVISION MED 10, 100 OCH 1000
EN UTVECKLINGSARTIKEL PUBLICERAD FÖR PEDAGOG STOCKHOLM ATT UNDERVISA MULTIPLIKATION OCH DIVISION MED 10, 100 OCH LEARNING STUDY I PRAKTIKEN Författare: Tina Edner E-post: tina.edner@stockholm.se Skola:
Läs mer