Programmering - Anton-L-GitHub/Learning GitHub Wiki
Allmänt om programmering
Maskinkod | Kod som datorn läser |
Programspråk | Programmeringsspråk som människan förstår |
Compiled language | (C, C++, Objective C) Mottagaren av koden får en färdig kod (maskinkod) som datorn kan köra på en gång. |
Interpreted language | (PHP, Javascript) Mottagaren får köra koden själv. |
Hybrid | (python, c#, java, VB,NET) Mottagaren får en blandning. |
Interactive mode | När använderen kör en line of code eller ett block of code. |
Script mode | När användaren kör större mängd rader kod. |
Text editor | En bättre form av notepad. |
IDE | Compiler, debugging osv. |
Character Sets
- ASCII (Amarican Standard Code for Information Interchange )
- UTF-8 = Typ alla characters
Memory Allocation
Different storage places.
I Java:
HEAP
- Objects
STACK
- Primatives types
- Short lived variables
- "links/referencer" to objects on the HEAP.
Memory deallocation
Java automaticlly removes (garbage collection):
- primative types after a meathod has runned.
- Unused reference types
This is not supported in ex. C++.
Procedual programming
OOP
Object Oriented Programming
Abstraction
Hide complexity
Coupling
Dependency "Reducing coupling" mellan klasser.
Setters and getters
Constructors
A class method that returns a instance.
Encapsulation
Bundeling the data and methods that operate on the data inside a unit.
Overloading
Gör det möjligt att skicka olika data typer som argument, eller inget alls, till en metod/constructor.
I språk som python / c# kan man istället sätta default values ist.
Gör bara detta när du måste. Typ som när det är olika datatyper.
Instantiating
Creating a object of a class
Inheritance
En klass can ärva metoder och attributer av en parent/superklass.
Interfaces
Aka Contracts
Används endast i vissa språk, tex Java.
We use interfaces to build loosley-coupled, extensible testable applications.
Bra för att:
- Bygga loosley-coupled code.
- Classer kan då bytas ut utan att påverka andra classer
- Du vill kunna byta en del i bilen utan att behöva byta ut massa andra som funkar.
Interfaces - What should be done.
Classes - How it should be done.
Upcasting / Downcasting
Upcasting casting an object to one of its super types. Downcasting casting an object to one of its sub types.
Polymorphism
Many forms
Tillexempel olika objekt som har en metod med samma namn.
BoxControl[] controls = {new Textbox(), new CheckBox()}
for (var control : controls) {
control.render()
}
Abstract classes and methods
Abstrakta klasser använder vi när vi inte vill kunna skapa instanser av klassen.
Typ som att vi vill skapa en instans av Dog(Animal) och Human(Animal) men inte själva Animal classen.
Abstracta metoder tvingar childrenklasser att skapa en metod som heter likadant.
Final classes and methods
Final classer är sista "child klassen", gör det omöjligt att ärva från denna klass.
Final metoder är metoder som inte går att override.
Används inte så ofta.
Access modifiers
Exceptions
Checked exceptions
Problem som vi kan förutspå
Tex.
Öppna en fil, som inte finns.
Istället för att hela programmet kraschar så får användaren en liten varning.
Unchecked exceptions
run time exceptions Tex, exeptionen du får när metod får fel argument.
Errors
Om något utanför vår kod, tex att java får problem med Memory Allocation.
Generics
Streams
Datastreams som man kan pipea/ filtrera osv.