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.