ITHS_C#_Tenta_1 Flashcards

1
Q

Vad omvandlar kod til maskinkod som datorn förstrpr?

A

De nya språken kan översättas till maskinkod av ett separat datorprogram som heter kompilator. (compile: sammanställa) Några exempel på språk som man kompilerar är: C, C++, C#, Java, Visual Basic, Objective-C, Haskell och Erlang.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
2
Q

Förklara skillnaden på ett expression och ett statment

A

Ett statement talar om för kompilatorn “gör det här”.
Alla statements ska avslutas med ett semikolon: ;

Console.WriteLine(“jag är ett statement”);

Ett expression är ett statement som evalueras till ett värde.
Exempel: 1 + 2

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
3
Q

Nämn de 6 viktigaste Datatyperna

A

bool - true eller false
byte - tal, 0..255
short, int, long, ushort, uint, ulong - heltal
float, double, decimal - flyttal (tal med decimaler, punkt i stället för komma)
char - ett enstaka tecken, skrivs med apostrof, ‘c’
String - en sträng av chars, skrivs med citattecken, den enda som inte är primitiv

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
4
Q

Vad kallar man en variabels namn?

A

En variabels namn kallas identifier.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
5
Q

Vart sparas komlicerade objekt och strängar

A

Komplicerade värden som objekt och strängar ligger på heapen. Variabeln pekar på det verkliga värdet.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
6
Q

Vad är “stacken”?

A

The stack is a segment of memory where data like your local variables and function calls get added and/or removed in a last-in-first-out (LIFO) manner.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
7
Q

Vad är “Heapen”

A

The heap is the segment of memory that is not set to a constant size before compilation and can be controlled dynamically by the programmer. Think of the heap as a “free pool” of memory you can use when running your application.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
8
Q

Beskriv skillnaderna på en referens variabel och en primitiv variabel

A

En referens variabel pekar till ett annat objekt. En primitiv variabel pekar på ett direkt värde

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
9
Q

Vad är ett statement?

A

Ett statement utgörs endast på 2 sätt.
Sätt nummer ett:
Utgörs av en rad kod som avslutas med ett semikolon. Sätt 2 utgör ett statement av en eller flera rader kod som avslutas med ett block.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
10
Q

Beskriv anatomin av dessa statements

bool isDone;
int heltal = 5;
const float decimalTal = 0.1f;

A

Exempel 1 är bara en deklaration(eng. Declaration).

Exempel 2 & 3 tilldelar variablerna värden. Kallas assignment.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
11
Q

Vad består ett expression statement av?

A

Ett Expression statements består ut av en eller fler operander och noll eller fler operators. Nedanför är tre exempel på Expression statements i underskrift:

5 > 4; //Två operander samt en operator blir ett expression statement
i = 5; //En operand samt noll operators blir ett expression statement
((5 + 5) * 10) / 1; //Sex operander samt tre operatorer blir ett expression statement.
Parenteserna är “grouping operands” därmed är de med i räkningen.
Operand Operator

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
12
Q

Vad måste ett expression statement returnera?

A

Ett Expression statement måste även returnera ett resultat som är ett enskild värde, ett objekt, en metod eller ett namespace. Därför är även dessa tre exempel i underskrift expression statements:
float myPrice = GetPrice(); //returnerar ett enskilt float värde, som i sig är en operand

Console.WriteLine(“Hello World”); //returnerar void, en datatyp som representerar inget värde.

Dog myPoodle = GetPoodle(); //returnerar ett objekt (I detta exempel)

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
13
Q

För varje uttryck nedan, svara på frågorna:
Vilka datatyper är operanderna? (operand = det som är på sidorna om operatorn)
Vad blir resultatet? Vilken datatyp är resultatet?

1 + 1
1 + "1"
1 + '1'
5 + 5.5
"10" - "5"
2 / 0
15 % 12
true + 1
1 + "'1'"
(int)101.01
(string)42
(2 * 3) + 1
2 * (3 + 1)
A

1 + 1
Blir integern 2. Då int med en + operator adderar värdet på integern med den andra operanden.
1 + “1”
Blir strängen “11” då det inte går att använda en + operator på en integer med en sträng utan att först “Parse’a” strängen. Implicit blir hela uttrycket:
1.ToString() + “1”
1 + ‘1’
Blir integern 50. char datatypen har en representation av nummer för alla karaktärer. ‘1’ har en representation som 49. Summan av 1 och 49 är 50.

  1. 5 + 5.5
    Detta blir en double med värdet 10.5 det görs antagligen då en 10.5. 5.5 har ingen implicit konverting till en int. Utan behövs göras explicit. 5
  2. “10” - “5”. Båda operanderna är strängar. Och det finns inte en - operator för sträng uttryck. Så detta är olagligt och kompilerar inte. Du får en röd rad under uttrycket
  3. 2 / 0
    Båda typer blir implicit integers. Det är dock olagligt att dela med 0, så detta kompilerar inte. Du får en röd rad under uttrycket
  4. 15 % 12
    15 är en integer operand, 12 är en integer operand. % är en operator som finns till integers. Datatypen blir integer. svaret blir 3. Forts. nästa sida.

true + 1
Även om true oftast representeras som 1 i andra C Språk (c/c++) så har true och false ingen siffer representation i c#. Så därför kompileras inte detta uttrycket. Om man vill multiplicera, addera, etc, med true eller false får man göra ett shorthand if statement. (true ? 1 : 0)

1 + “‘1’”
“1’1’” som en sträng. Eftersom ‘1’ är omringat av citattecken så räknas ‘ som en del utav strängen. Implicit blir detta 1.ToString() + “‘1’”

(int) 101.01
101. 01 är en double som vi explicit “typecast’ar” till en int. Detta “rundar” alltid neråt. (Tekniskt sätt avrundas det inte, decimalen tas bort)

  1. (string)42
    integer har ingen typecast till string. För att göra detta måste vi använda en annan metod. t ex 42.ToString();
  2. (2 * 3) + 1
    integer operander, integer operatorer. integer med resultatet 7 då:
    (2 * 3) -> 6 + 1 = 7
  3. 2 * (3 + 1)
    integer operander, integer operatorer. integer med resultatet 8 då:
    (3 + 1) -> 2 * 4 = 8
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
14
Q

Vad är modulo? & vad används det mest till?

A

Modulo är en matematisk operation som räknar ut talet som blir över efter a är delat med b.

Det är inte särskilt använt förutom när man vill testa ifall ett tal är jämnt eller udda.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
15
Q

Vad är ett block?

A

Ett block är ett antal statements. Tecknen { och } (curly brackets, blockparentes, måsvingar) avgör var blocket börjar och slutar.

Man behöver bara använda { } om blocket innehåller mer än ett statement.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
16
Q

Vad är ett Scope ?

A

Man kan ha block inuti andra block. Variabler är bara synliga på lägre nivåer.
{
int x; // högsta nivån, kan använda x
{
int y; // lägre nivå, kan använda x och y
{
int z; // lägsta nivån, kan använda x, y och z
y = 1; // ok!
}
}
y = 2; // inte ok! y är inte synlig här
}

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
17
Q

Nämn 2 vanliga kontrollstrukturer

A

If & Switch statements

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
18
Q

Vad är en Enum varför använder man dem?

A

Enum är en värdetyp definition, som bara kan ha de värden som man anger. Fungerar på samma sätt som bool. En stor fördelen med enums är att de gör programmet lättare att läsa.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
19
Q

Vad är en lokal variabel?

A

Ett värde som man skriver direkt i koden kallas också för lokala variabler. Exempel:

Variabler som definieras inuti en funktion kallas lokala. De existerar bara i den funktionen. Man kan definiera fält (eng. fields) som är oberoende av en funktion.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
20
Q

Vad används loopar till?

A

Används för att upprepa det som står i ett block ett viss antal gånger.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
21
Q

Vad är konkatenering & string interpolation? Vad kan man använda dem till?

A

Det finns flera sätt att skriva ut värdet på en variabel.
Alternativ ett: lägg ihop strängar med variabeln med hjälp av konkatenering.
string result = “The result is: “ + answer + “!”;
Alternativ två: använd string interpolation.
string result = $”The result is: {answer}!”;
Dollartecknet framför strängen talar om att man kan använda blockparenteser för att lägga in värdet på en variabel direkt i strängen.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
22
Q

Vad är ette syntax fel?

A

Syntax error är när man skriver någonting som inte är korrekt C#. Det finns inga möjligheter för kompilatorn att bygga programmet, utan den rapporterar “syntax error” och ger upp.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
23
Q

Vad är et körfel?

A

Runtime error är när ett fel inträffar under körning. Det beror på vad olika variabler har för värden för tillfället. Det vanligaste är när man försöker göra något med ett objekt som råkat bli null (senare i kursen) eller misslyckas med att konvertera ett värde till en annan datatyp.
Körfel går ofta inte att förutsäga. Man undviker dem genom att vara lite paranoid. Kontrollera variablernas värden i stället för att hoppas att de är ok.
Exempel:
int x = int.Parse(“fem”);
“Input string was not in a correct format”

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
24
Q

Vad är ett logiskt fel?

A

Ett logiskt fel är när vi har sagt åt datorn att göra något annat än det vi menade. Programmet kan lyckas köra utan att generera några syntaxfel eller körfel.
Logiska fel hittar man oftast genom att man märker att programmet gör fel saker och man börjar titta närmare på det. Några tips för att felsöka:
Skriv ut värdet på varje variabel - även de du är bombsäker på
Använd debug verktygen och följ programmet, det blir uppenbart vart programmet “fastnar”
Reducera komplexitet: kommentera bort saker tills det fungerar igen
Exempel:
for( int x = 1; x < 3; x– ) { } // oändlig loop

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
25
Q

Vad är en bugg?

A

Ordet bug används för att beteckna när ett program inte gör det som det ska. Bug används både för körfel och logiska fel. (syntaxfel hittas tidigare)
Processen att avlägsna buggar kallas debugging, avlusning på svenska.
Inom modern programmering lägger man mycket tid på att undvika buggar.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
26
Q

Vad används felhantering för? Nämn ett par verktyg som går att använda sig av.

A

Ett sätt att låta användaren veta att något har gått fel är att man visar en felkod eller ett felmeddelande.

Körfel (eng, runtime error) kan hanteras med hjälp av try, catch, throw och finally.
Man kan orsaka ett fel med avsikt genom att använda throw.
När är det användbart?
Exempel:
throw new Exception(“Felmeddelande”);
Om man debuggar i Visual Studio så kommer programmet att pausa som om man hade haft en brytpunkt där.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
27
Q

vad är en array?

A

En array är en samling(eng. collection) värden av samma datatyp.

En array har en bestämd längd.

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
28
Q

nör du vill komma åt ett värde i arrayen vad kallas detta?

A

Vi säger att vi indexerar när vi vill komma åt ett element i arrayen. Man använder hakperenteser (square brackets), [].

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
29
Q

Vad anävnder man mest för att gå igenom en hel array?

A
Här är två vanliga sätt att loopa igenom en array, med for och med foreach. Variabeln i kallas index.
for(int i = 0; i < array.Length; i++ ) {
	Console.WriteLine( array[i] );
}
foreach(var x in array) {
	Console.WriteLine(x);
}
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
30
Q

Vad är en multidimensionell array?

A
En vanlig array har en dimension. Det går att göra arrayer med flera dimensioner:
int[,] array = new int[4, 2];
// Skapar en tvådimensionell array med fyra rader och två kolumner
int[,] array2D = new int[,] { { 1, 2 }, { 3, 4 }, { 5, 6 } };
var three = array2D[0, 1];
array2D[0, 1] = 33;
int[, ,] array1 = new int[4, 2, 3];
// 3d-array
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
31
Q

Vad är en funktion?

A

En funktion är något som har noll eller flera parametrar och kan returnera (skicka tillbaka) ett värde.

Måste definieras innan den kan användas
Anropas i koden, med värden (argument) för varje parameter
Har noll eller flera parametrar
Utför instruktionerna i funktionsblocket { }
Kan returnera ett värde
Används för att undvika upprepningar, strukturera kod, lösa svårare problem

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
32
Q

vad menas med implicit och explicit returvärde i en funktion?

A
static void Funktionsnamn( parametrar ) {
	  // funktionens innehåll, en void-funktion returnerar 
  //implicit, om det inte görs explicit.
}
static int Funktionsnamn( parametrar ) {
	return 0;  // funktionen returnerar ett värde av typen int
}
parametr
How well did you know this?
1
Not at all
2
3
4
5
Perfectly
33
Q

Finns det alltid en Main Funktion och vad används den till?

A

När man startar programmet anropas alltid Main först. Man kan skicka med strängvärden till parametern args. Nya funktioner måste definieras “utanför” Main. går att göra i C#

How well did you know this?
1
Not at all
2
3
4
5
Perfectly
34
Q

Vad är rekursion?
Vad är rekursion bra för?
vad måste en rekursiv funktion innehålla?

A

“A function that calls itself, until it doesn’t”
Bra på att lösa vissa problem som involverar upprepning
Många problem som man kan lösa med rekursion kan man lösa med iteration (for eller while)
En rekursiv funktion har basfall (eng. basecase) och rekursionsfall (eng. recursion case)
Ett vanligt körfel vid rekursion är StackOverflowException. Det betyder att funktionen har anropats för många gånger och orsakas i de flesta fall av en oändlig loop.

35
Q

Fakultet skrivs n! och beräknas: n! == n * (n-1) * (n-2) * .. * 2 * 1.
Exempel: 4! == 4 * 3 * 2 * 1 = 24
Quiz:
Vilken (Eller vilka?) uträkningar av hela uträkningen av ovan är basfall?
Vilken (Eller vilka?) uträkningar av hela uträkningen av är rekursionsfall?

A

Basfallet är 1! == 1 och rekursionsfallet är n! = n * (n-1)!

36
Q

Hur skickas värdetyper och referenstyper?

A

Värdetyper skickas genom värde och referenstyper skickas via referens.

37
Q

Beskriv skillnaderna på ref & out.

A

ref
Man måste i förväg initialisera parametrar som skickas genom ref
Man måste inte sätta (assign) ett värde till ref parametern innan man returnerar ifrån metoden.
Användbart när metoden skall använda värdet ifrån parameter variabeln.
Data som matas in i ref nyckelordet kan gå båda vägarna, in och ut.

out
Man måste inte i förväg initialisera parametrar som skickas genom ref
Man måste sätta ett värde på out parametern innan man returnerar ifrån metoden.
Användbart när en metod skall returnera flera värden.
Data som matas in i out nyckelordet kan bara komma en väg, ut.

38
Q

Vad är verisonhantering?

A

Version control är ett system för att hantera ändringar i samlingar av information - kodfiler. Det är mycket användbart när flera personer ska arbeta med samma filer.
revision - ett “snapshot” av alla filer, en version
Varje revision har ett nummer
Varje revision har ett timestamp (när ändringen sparades i systemet)
Varje revision sparar användaren som gjorde ändringen
Demo: wikipedia

39
Q

Vad använder man versionshantering till?

A

backup och återställning
man vet när man har senaste versionen av en fil
historik över ändringar: vad ändrades, när, av vem
dokumentation (commit messages)
branching och merging
enklare att arbeta flera personer med samma filer

40
Q

Beskriv skillnaden på centralizerad och distribuerad VCS

A

Centraliserad
En central server har repositoryt, klienter checkar ut filer när de jobbar med dem och checkar in dem när de är klara
Exempel: TFVC = Team Foundation Version Control (Microsoft)

Distribuerad
Har också en central server, men varje klient har en kopia av hela repositoryt.
Exempel: Git (open source)

41
Q

Förklara de olika begreppen

repository
clone
commit
fetch
pull (check out)
push (check in)
merge
reset (revert)
working copy
change / diff
revision
conflict
resolve
master / trunk / baseline
branch / fork
root
head (tip)
tag
A

repository databas över filerna som versionshanteras
clone skapa en kopia av ett repository
add lägger in mina gjorda ändringar i staging area
commit “make a group of changes final, and available to all users” - skapar en ny revision av det som ligger i min staging area
revision systemets tillstånd efter en specifik commit
fetch kolla om det har kommit till några nya versioner som vi behöver
uppdatera vårt lokala repository med

branch skapa en ny gren i historik-trädet, så att framtida commits inte
påverkar ursprungs-branchen. Används för att arbeta med features utan att det behöver påverka hela repositoryt
merge kombinera två olika branches genom att föra in ändringar från den ena branchen till den andra
pull ladda ner nya versioner (kombination av fetch och merge)
push ladda upp våra committade ändringar till det centrala repositoryt
revert kasta bort lokala ändringar och återställ den senaste revisionen
(eller en tidigare)

working copy min lokala kopia av filerna i mitt repository
change ändringar i en eller flera filer i min working copy, måste committas
och pushas om man vill spara ändringarna
conflict när två olika ändringar i en fil motsäger varandra, konflikten måste
lösas innan man kan fortsätta arbeta mot repositoryt
resolve lösa en conflict genom att göra en ny commit som är en merge av
de två commits som står i konflikt

master “the unique line of development that is not a branch”
root första revisionen i historiken
head senaste revisionen i min aktuella branch (senast gjorda commit)
tag namnge en specifik revision, exempel: ”version 1.0”

Forking is done on the GitHub Account while Cloning is done using Git. When you fork a repository, you create a copy of the original repository (upstream repository) but the repository remains on your GitHub account. Whereas, when you clone a repository, the repository is copied on to your local machine with the help of Git.

42
Q

Hur löser man en git konflikt?

A

En konflikt beror på att två användare har commitat ändringar som motsäger varandra. Precis som i verkligheten är konflikter något som inträffar naturligt och som man behöver lära sig att hantera på ett klokt sätt.
Konflikter löses genom att man skapar en ny commit, som innehåller de ändringar som man vill spara från båda konflikt-committs. Om ändringarna är i olika filer löser Git konflikten automatiskt. Annars måste man tala om det själv, genom en merge.

43
Q

Vad är en klass och en konstruktor?

A
Inom C# ligger all kod i klasser. En klass kan liknas vid en mall. När man vill använda en klass så säger vi att man instansierar klassen, eller skapar ett objekt av klassen.
Klasser kan ha en speciell funktion som kallas konstruktor. Den anropas automatiskt när man skapar nya objekt av klassen.
public class Klassnamn {
	public Klassnamn() { }  // konstruktor
}
Klassnamn x = new Klassnamn(); // skapa objekt
44
Q

Vad är Fält för något?

A
Variabler som är lokala för en klass kallas fält (eng. fields). Vissa fält ska vara synliga utanför klassen, då använder man public access modifier. fält som är private är bara synliga inuti klassen.
public class Person {
	public int Age; //detta är ett fält
	private string fält2; //detta är ett privat fält
}
45
Q

Vad används konstruktorn till?

A
Konstruktorn skall användas för att göra i ordning objektet för användning. Ett vanlig sådan process tar parametrarna ifrån konstruktor och sätter deras värden eller referenser i fält. Konstruktorn är speciell, för den heter alltid samma sak som klassen och har inte en returtyp i sin deklaration. this refererar till aktuellt objekt. Ni skall inte göra något automagiskt i Konstruktorn! 
public class MyClass {
	private int param1;
	public MyClass(int param1) {
		this.param1 = param1;
	}
}
MyClass c = new MyClass(1);
46
Q

Vad är grundregeln för properties? vad kallas detta och vad gör det?

A

Grundregeln är att alla variabler ska vara privata om de inte måste vara publika. För att komma åt en privat variabel kan man skriva metoder som hanterar den Java-style:
public class Person {
private bool alive; // ett fält
public void SetAlive(bool b) { alive = b; } //en metod
public bool GetAlive() { return alive; } // en metod
}
Detta kallas encapsulation. Encapsulation ökar hur modulär koden är samt ökar läsbarhet

47
Q

vad är en property?

A

Det är väldigt vanligt med sådana metoder i objektorienterad programmering så därför har man i C# en förkortning för dem, som kallas properties.

Detta kallas encapsulation. Encapsulation ökar hur modulär koden är samt ökar läsbarhet

public class ClassName {
	public bool MyProperty { // en property
		get { return field; }
		set { field = value; }
	}
	private bool field; // ett fält
}
48
Q

vad kalls en funktion som tillhör en klass?

A

Funktioner utanför en klass finns inte i C#, och funktioner som tillhör en klass kallas metoder. En metod kan referera till objektet den befinner sig i med hjälp av this.

49
Q

Vad används this keywordet till?

A
Funktioner utanför en klass finns inte i C#, och funktioner som tillhör en klass kallas metoder. En metod kan referera till objektet den befinner sig i med hjälp av this.
public class Lying {
	private bool lie;
	public bool IsEven(int number) {
		if( this.lie )
			return false;
		return number % 2 == 0;
	}
}
50
Q

Vad gör keywordet static?

A
Vanliga fält, properties och metoder ligger i ett objekt. Man kan lägga till static för att göra så att de hör till klassen i stället.
public class Counter {
	public int Value;
	private static int counter = 0;
	public Counter() { counter++; this.Value = counter; }
}
Counter k1 = new Counter(), k2 = new Counter();
// k1.Value == 0
// k2.Value == 1
51
Q

Vad är en strukt & vad skiljer den från en klass?

A

Man skapar en struct på samma sätt som class. Nästan allt som man kan göra med en klass kan man göra med en struct.

Skillnaden är att klasser är en reference type och en struct är en value type.

Använd när du vill jämföra objekten på deras innehåll eller av prestanda anledningar då värdetyper bara i ytterst få fall hamnar på heapen.

public class MyClass { .. }
public struct MyStruct { .. }
MyClass c1 = new MyClass();
MyClass c2 = c1;  // c2 refererar till samma objekt som c1
MyStruct s1 = new MyStruct();
MyStruct s2 = s1;  // s2 är en kopia av s1
52
Q

Vad använder man arv/polymorfism till?

A
Vi använder arv för att göra fält, properties och metoder från en klass tillgängliga i en annan klass.
Exempel: säg att vi har en klass som representerar Fordon. En sak som alla fordon har är antal passagerare. En skillnad mellan olika typer av fordon är att bilar har hjul, men inte båtar.
class Fordon {}
class Bil : Fordon {}
Vi säger att Bil ärver från Fordon, samt att Bil är en slags Fordon.
53
Q

hur skulle klassen fordon & cykel klasserna se ut om du använde arv?

A
class Fordon {
	public int AntalPassagerare;
}
class Cykel : Fordon {
	public Cykel() {
		this.AntalPassagerare = 1;  // ärvs från Fordon
	}
	public int AntalHjul;
}
Cykel kan allt som Fordon kan och lite till.
54
Q

Vad används keywordet base till?

A
Vi kan anropa basklassens fält, properties och metoder med hjälp av base.
class Fordon {
	public Fordon(int antalHjul) {}
	public void Travel() {}
}
class Bil : Fordon {
	public Bil() : base(4) { }
	public void Drive() {
		base.Travel();
	}
}
55
Q

vad gör keyworden override och virtual?

A

När vi har metoder med samma namn i basklass och subklass så måste C# hantera det.
Om vi inte skriver något skyms metoden och VS varnar. Lägg till new i subklassen för att ta bort varningen.
Om vi skriver virtual i basklassen och override i subklassen så ersätts metoden.

Skillnaden visar sig om vi hanterar en subklass som en basklass med typecast:
Bil bil = new Bil(); ((Fordon)bil).Metod();
56
Q

ge 4 exempel på access modifiers och beskriv vad de gör och varför de används?

A

public - vem som helst kan se och ändra en variabel eller använda en funktion
protected - synlig i klassen den ligger och alla klasser som ärver från den
internal - synlig i hela projektet
private - bara synlig i klassen den ligger, det som gäller om man inte skriver något

57
Q

När används polymorfism?

A
Polymorfism är ett annat namn för arv. Det handlar om att man kan ha flera olika klasser som har saker gemensamt.
Fordon f = new Fordon();  // basklass
Cykel c = new Cykel();    // subklass
Fordon f2 = new Cykel();  // ok - en cykel är ett slags fordon
Cykel c2 = new Fordon();  // syntax error!
public static void Köp(Fordon f) { }
Köp(f);  // ok
Köp(c);  // ok - en cykel är ett slags fordon
58
Q

Vad är overloadning?

A
Registrera( new Cykel() );
Registrera( (Fordon)(new Bil()) );
public void Registrera(Cykel c) {
	Console.WriteLine("Cykeln är registrerad");
}
public void Registrera(Bil b) {
	Console.WriteLine("Bilen är registrerad");
}
public void Registrera(Fordon f) {
	Console.WriteLine("Du har registrerat ett okänt fordon");
59
Q

Vad är ett interface och varför används det?

A

Om vi har klasser som har något gemensamt, men som det inte passar att använda arv på, kan man använda gränssnitt = interface.

Man kan inte skapa objekt av ett gränssnitt, men man kan använda det till variabler och funktioner.

Ett interface kan bara innehålla publika properties och metoder. Interface brukar börja med bokstaven I.

Ett interface kan ses som ett kontrakt eller ett löfte. Det “lovar” att klassen som implementerar interfacet kan göra allt som står i interfacet.

60
Q

Skriv ett enkelt inteface och en klass som använder sig av det.

A
public interface ISnabbaSaker {
	int Toppfart { get; set; }
	void SaktaNer();  // semikolon i stället för funktionsblock!
}
public class Cykel : Fordon, ISnabbaSaker {
	public int Toppfart { get; set; }
	public void SaktaNer() {}
}
Alla metoder och properties i ett interface måste implementeras.
61
Q

Vad är abstraka klasser och metoder?

A

Fordonsklassen representerar ett allmänt fordon och cykelklassen ett specifikt.

Om vi vill markera att man inte ska skapa objekt av den allmänna klassen så kan man göra den abstrakt.

En abstrakt klass kan ha abstrakta metoder - metoder som måste finnas, men det är upp till subklassen att
implementera dem.

public abstract class Fordon {
	public abstract void ImplementeraMig();
}
public class Cykel : Fordon {
	public void ImplementeraMig() { }
}
62
Q

Vad är ett nameSpace?

A

För att organisera kod använder C# sig av namespaces, ett scope som ligger över alla andra. Vi lägger alla klasser som hör ihop i samma namespace.
namespace Laboration1 {
public class Exempel { }
}
För att använda sig av ett namespace skriver man
using Laboration1;
using System;

63
Q

Vilket par av regler gäller för att kunna identifiera ett statement i alla lägen

Välj ett alternativ

a. Ett statement utgörs av en rad kod som avslutas med semikolon alternativt en rad eller flera rader kod som avslutas med ett block
b. Det finns inte ett par regler som går att använda för att identifiera ett statement

c. Ett statement utgörs utav en rad kod eller flera rader kod som avslutas med ett semikolon.

d. Ett statement utgörs utav ett statement på en rad eller flera statements på flera rader kod

A

a

64
Q
  1. Vilket uttalande är sant gällande uttryck (eng. Expressions)? Välj ett alternativ
    a. Ett uttryck består utav en eller flera operander och en eller fler operators
    b. Ett uttryck består utav en eller flera operander och noll eller fler operators
    c. Ett uttryck består utav noll eller flera operander och en eller fler operators
    d. Ett uttryck består utav noll eller flera operander och noll eller fler operators
A

b

65
Q

Vad innehåller eller gör följande rad kod? Märk alla alternativ som gäller.
int number = 1;

a. Expression b. Identifier c. Declaration d. Assignment

A

Alla alternativ är korrekta

66
Q

. Vad skriver följande kod ut till konsolen? Välj ett alternativ for (int i = 11; i > 1; i–) { Console.Write($”i “); }

a. 10 9 8 7 6 5 4 3 2 1
b. 10 9 8 7 6 5 4 3 2
c. 11 10 9 8 7 6 5 4 3 2 1
d. 11 10 9 8 7 6 5 4 3 2

A

d

67
Q
  1. Vilket värde skrivs ut till konsolen av följande kod? Välj ett alternativ int[] numbers = new[] { 1, 2, 3, 4 }; int i = numbers.Length; i–; i++; i++; i–; i–; Console.Write(numbers[i]);
    a. 1 b. 2 c. 3 d. 4
A

d

68
Q

Vilket uttalande stämmer om en overload? Välj ett alternativ

a. En variant på en metod med annorlunda parametrar och / eller returtyp
b. En variant på en metod med fler parametrar än grund metoden och / eller returtyp
c. En variant på en metod som överskridits av en subklass
d. En variant på en metod som gömmer en metod ifrån en basklas

A

a

69
Q

. Kalle har försökt köra ​git merge master​ på sin development branch och det uppstod konflikter. Vad ​måste​ Kalle göra för att git skall låta Kalle skapa en commit? Markera alla nödvändiga alternativ

a. Ta bort konflikterna
b. Hämta nya ändringar ifrån master
c. Checka ut development branchen
d. Testa sin kod

A

a

70
Q

11.Om jag checkar ut branchen ​development​ till min working copy. Och sedan kör kommandot ​git merge master ​Vad har jag gjort för git operation då? Välj ett alternativ

a. Gjort en merge av ​development​ till ​master​ på repositoryt
b. Gjort en merge av ​development​ till ​master​ i min working copy
c. Gjort en merge av ​master​ till ​development​ på repositoryt
d. Gjort en merge av ​master​ till ​development​ i min working copy

A

d

71
Q

12.Vilket uttalande stämmer när man pratar om hur en ​struct​ skiljer sig ifrån en class​? Välj ett alternativ

a. struct​ kan bara jämföras via värde
b. class​ kan inte jämföras via värde
c. struct​ är en värdetyp
d. class​ är en värdetyp

A

c

72
Q
  1. Vilket uttalande är sant om ett fält (eng. Field)? Välj ett alternativt

a. En medlemsvariabel är samma sak.
b. En property är samma sak.
c. Man kan inte använda fält utanför den tillhörande klassens scope.
d. Man kan inte ha statiska fält i en icke-statisk klass.

A

a

73
Q
  1. Vilket av nedanstående uttalanden är sant? Välj ett alternativ
    a. En abstrakt klass kan bara innehålla publika properties och metoder.
    b. En klass kan implementera flera interface
    c. En subklass får inte gömma en metod ifrån en basklass
    d. En basklass kan ärvas av ett interfac
A

b

74
Q

15.Vad skriver nedanstående kod ut på konsolen? Välj ett alternativ

​class Animal     {         
public string name;         
public string sound;         
public virtual void Vocalize()  {             Console.WriteLine(sound);         
}} 
class Dog : Animal {
      public Dog(){ sound = "Woof"; }         
      public virtual void Bark(){             
             base.Vocalize();
} }     
class CockerSpaniel : Dog{          
          public CockerSpaniel(string name)         {             
          this.sound = "Rrr-uff";             
          this.name = name;         
} }      
class Program{
         static void Main(){             
                 var dog = new CockerSpaniel("Rufus");             
                 dog.Bark();         
} } 

a. Ingenting
b. Rufus
c. Woof
d. Rrr-uf

A

d

75
Q

Förklara anatomin av statements nedan:

If statement:
if (availableMoney > price) buy();

For statement:
for (int i = 0; i < 5; i++) { Console.WriteLine(i); }

A

keyword condition then-statement

keyword initializer condition iterator body

76
Q

Förklara anatomin av deklaration statements nedan

Tre Declaration statements:
bool isDone;
int heltal = 5;
const float decimalTal = 0.1f;

A

keyword identifier Expression statement

77
Q

vad består ett expression statement av?

A

Ett Expression statements består ut av en eller fler operander och noll eller fler operators.

78
Q

vad måste ett expression statement göra?

A

Ett Expression statement måste även returnera ett resultat som är ett enskild värde, ett objekt, en metod eller ett namespace.

79
Q

vad är modulo?

A

Modulo är en matematisk operation som räknar ut talet som blir över efter a är delat med b.

80
Q

vad är en Const?
Vad är de bra för?
vad säger ms convention om hur de skall skrivas?

A

En konstant är en variabel som inte kan ändras. Microsofts convetion säger att vi skall ha PascalCase på const identifiers
const int Max = 15;
Max = Max + 1; // förbjudet!
Konstanter är bra när det gäller värden som inte kommer att ändras. Om du kommer på dig själv med att upprepa ett specifikt värde flera gånger, så är det god programmeringssed att använda en konstant i stället.

81
Q

Vad är sant för en funktion?

A

Måste definieras innan den kan användas
Anropas i koden, med värden (argument) för varje parameter
Har noll eller flera parametrar
Utför instruktionerna i funktionsblocket { }
Kan returnera ett värde
Används för att undvika upprepningar, strukturera kod, lösa svårare problem

82
Q

kan värdetyper vara null?

A

Värdetyper kan inte vara null (string beter sig som en värdetyp, är en referenstyp), referens typer skickas via referens.

83
Q

Förklara hur man kan använda outparametrar & refparametrar.

A
  1. Out and Ref are keywords which helps you pass variable data to functions and methods by reference.
    1. Ref is two way from caller to callee and back.
    1. Out is one way, it sends data back from the calleeto caller and any data from caller is discareded.
2. Example Ref (prints out 30 instead of 20): 
Static void Main()
{
      int OutSideVar = 20; 
      SomeFunction(ref OutsideVar);
      Console.WriteLine(OutSideVar);
}
Static void SomeFunction(ref int InsideVar)
{
     Insidevar = InsideVar + 10; 
} 
  1. With out the example differs!
      1. Firstly the InsideVar needs to be deklared in the funktion. Then it passes the value of that variable from inside the function and out! it does not use the initial value that was passed as a parameter. So only 10 is printed out to the console.
Static void Main()
{
      int OutSideVar = 20; 
      SomeFunction(out OutsideVar);
      Console.WriteLine(OutSideVar);
}
Static void SomeFunction(out int InsideVar)
{
     int InsideVar = 0; 
     Insidevar = InsideVar + 10; 
} 
Det här kan vi ändra på med out-parametrar: en variabel som får sitt värde i funktionen.
static void fun(out int reference, int[] composite) {
	reference = 2;  // variabeln får sitt värde här
	composite[0]++;
}
int x = 1;
int[] xs = new int[] { 1 };
fun(out x, xs);
// x == 2,  xs == { 2 }
Ref-parametrar å andra sidan är referenser till en existerande variabel:
static void fun(ref int reference, int[] composite) {
	reference++;  // vi ändrar på en variabel som kommer utifrån
	composite[0]++;
}
int x = 1;
int[] xs = new int[] { 1 };
fun(ref x, xs);
// x == 2,  xs == { 2 }
84
Q

Förklara skllanderna mellan ref och out

A

out
Man måste inte i förväg initialisera parametrar som skickas genom ref
Man måste sätta ett värde på out parametern innan man returnerar ifrån metoden.
Användbart när en metod skall returnera flera värden.
Data som matas in i out nyckelordet kan bara komma en väg, ut.

ref
Man måste i förväg initialisera parametrar som skickas genom ref
Man måste inte sätta (assign) ett värde till ref parametern innan man returnerar ifrån metoden.
Användbart när metoden skall använda värdet ifrån parameter variabeln.
Data som matas in i ref nyckelordet kan gå båda vägarna, in och ut.