Objektorientering boktips
Hej,
Läser på universitetet och förstår grunderna beträffande objektorientering, skulle vilja fördjupa mina kunskaper i området och önskar gärna hitta en bok om det.
Jag hittade boken Objektorienterad analys och design på biblioteket, men den kom ut 2001. Jag vet inte om det är så att den fortfarande är aktuell då principen borde vara likadan idag. Men det skulle kännas ganska onödigt om boken inte vore så "aktuell" och man inser det efter att ha läst den.
Mvh
Föråldrad bok. Dessutom är OOP rätt föråldrad teknik också. De flesta problem idag löses igenom funktionsprogrammering, d.v.s enkel programmering. Den minsta koden är ju den bästa koden som det sägs.
Något som jag dock skulle rekommendera är att kunna arv och interface och dess tillämpningar.
Jag brukar säga att:
Arv = Om du vill utöka en klass istället för att skriva om en hel klass
Interface = Om du vill filtrera bort funktioner och fält från en klass
Mer än så brukar jag inte använda och detta duger om du vill skapa feta applikationer. Något som jag också rekommenderar är Spring Framework som innehåller DI - Dependency Injection.
DI används när du vill att ditt objekt ska vara åtkommpligt överallt vid uppstart utav ditt program. Detta underlättar, annars får du själv hålla på deklarera objeket med objekt i konstrukören.
Exempel:
class A {
private C c;
public A(C c){
this.c = c;
}
}
class B {
private C c;
public B(C c){
this.c = c;
}
}
// Nu har både b och a, c i sig. Så ändras något i c från klass A eller B så kan dom "tala med varandra". Dom delar alltså samma minne.
class D {
private C c;
public D(C c){
c = new C();
B b = new B(c);
A a = new A(c);
}
}
Då är det bättre att göra så här:
class A {
@Autowired
private C c;
public A(){
}
}
class B {
@Autowired
private C c;
public B(){
}
}
// Nu är objektet c åtkommlig i klasserna A, B, D då dom delar samma minne. Detta används i Spring Framework.
class D {
@Autowired
private C c;
public D(){
}
}
@askeetit:
Det beror lite på vad du är ute efter? Hur man använder OO eller något mer teoretiskt? Om du känner att du förstår grunderna bra men vill få bättre förståelse för hur man går vidare och bygger/organiserar lite större program så skulle jag rekommendera Domain-Driven Design: Tackling Complexity in the Heart of Software av Eric Evans. Det är inte en bok om OO utan man kan använda koncept från DDD både inom OO och FP(funktionell programmering).
Föråldrad bok. Dessutom är OOP rätt föråldrad teknik också. De flesta problem idag löses igenom funktionsprogrammering, d.v.s enkel programmering. Den minsta koden är ju den bästa koden som det sägs.
Något som jag dock skulle rekommendera är att kunna arv och interface och dess tillämpningar.
Jag brukar säga att:
Arv = Om du vill utöka en klass istället för att skriva om en hel klass
Interface = Om du vill filtrera bort funktioner och fält från en klass
Mer än så brukar jag inte använda och detta duger om du vill skapa feta applikationer. Något som jag också rekommenderar är Spring Framework som innehåller DI - Dependency Injection.
DI används när du vill att ditt objekt ska vara åtkommpligt överallt vid uppstart utav ditt program. Detta underlättar, annars får du själv hålla på deklarera objeket med objekt i konstrukören.
Exempel:
class A {
private C c;
public A(C c){
this.c = c;
}
}
class B {
private C c;
public B(C c){
this.c = c;
}
}
// Nu har både b och a, c i sig. Så ändras något i c från klass A eller B så kan dom "tala med varandra". Dom delar alltså samma minne.
class D {
private C c;
public D(C c){
c = new C();
B b = new B(c);
A a = new A(c);
}
}
Då är det bättre att göra så här:
class A {
@Autowired
private C c;
public A(){
}
}
class B {
@Autowired
private C c;
public B(){
}
}
// Nu är objektet c åtkommlig i klasserna A, B, D då dom delar samma minne. Detta används i Spring Framework.
class D {
@Autowired
private C c;
public D(){
}
}
Tack, jag håller på med abstrakta klasser och interfaces nu i Java.
Det känns inte särskilt svårt direkt, inte just nu iallafall, men det jag personligen har problem med att förstå är vad man ska göra klasser av.
Jag gjorde ett kortspel till en examination och då hade jag
Spelare-Hand-Kort
Man kunde ju istället haft just här
Spelare-Kort
Så jag är inte helt hundra på vad som avgör vad som ska vara en klass eller inte.
Ett substantiv kan/ska vara en klass har jag hört men då blir det väl en hel del klasser?
Så du menar att man inte programmerar objektorienterat längre? Men är inte det hela grejen med Java, C++ etc.
@askeetit:
Det beror lite på vad du är ute efter? Hur man använder OO eller något mer teoretiskt? Om du känner att du förstår grunderna bra men vill få bättre förståelse för hur man går vidare och bygger/organiserar lite större program så skulle jag rekommendera Domain-Driven Design: Tackling Complexity in the Heart of Software av Eric Evans. Det är inte en bok om OO utan man kan använda koncept från DDD både inom OO och FP(funktionell programmering).
Tack jag ska kika på den, jag beskrev mitt problem i svaret till heretic.
Tack, jag håller på med abstrakta klasser och interfaces nu i Java.
Det känns inte särskilt svårt direkt, inte just nu iallafall, men det jag personligen har problem med att förstå är vad man ska göra klasser av.
Jag gjorde ett kortspel till en examination och då hade jag
Spelare-Hand-Kort
Man kunde ju istället haft just här
Spelare-Kort
Så jag är inte helt hundra på vad som avgör vad som ska vara en klass eller inte.
Ett substantiv kan/ska vara en klass har jag hört men då blir det väl en hel del klasser?
Så du menar att man inte programmerar objektorienterat längre? Men är inte det hela grejen med Java, C++ etc.
Tack jag ska kika på den, jag beskrev mitt problem i svaret till heretic.
Klart det fortfarande finns folk som programmerar objektorienterat, och för en del typer av problem så är det faktiskt den bästa lösningen.
Vad som har hän är snarare att all hype runt objektorientering har dött ut, och folk har börjat begripa att objektorientering kanske inte är lösningen på alla problem trots allt.
Vad man skall ha som klasser är en bra fråga, som inte har något definitivt svar. Själv skulle jag rekommendera att hålla nere antalet klasser, och inte skapa nya klasser utan ett tydligt behov av dem.
Tanken med DI är inte att Objekt ska vara tillgänglig vid uppstart.
Interface är inte till för att gömma fält.
Till ursprungs frågan, det är tråkigt med att svara med en video, men är precis vad det handlar om. Tar upp det första med din fråga om substantiv.
- Igår Quiz: Har du koll på det senaste inom processorkylare? 68
- Igår Cooler Master Ncore 100 Max – lättbyggt minstingchassi 12
- 27 / 3 Nytt vetenskapligt genombrott kan lösa OLED-inbränning 46
- 27 / 3 Microsoft vill göra handhållen Xbox 41
- 26 / 3 Microsoft patenterar teknik för bättre ray tracing-prestanda 27
- Igår Ny RAM-sparande funktion upptäckt i Microsoft Edge 7
- Igår Så byter du till gamla Notepad i Windows 11 32
- Igår Microsoft Copilot kan snart köras direkt på datorn 14
- 27 / 3 Stort steg för Windows på ARM: Google släpper optimerat Chrome 26
- 27 / 3 Xbox-chef är öppen för fler spelbutiker på konsol 23
- Igår Svenska Embracer säljer Gearbox för 4,9 miljarder kronor 14
- Igår Var femte användare har lämnat X sedan Musk tog över 115
- 27 / 3 Veckans fråga: Hur gammalt är ditt Steam-konto? 162
- 27 / 3 Bluffkampanj sprider sig genom Googles AI-sökfunktion 11
- 26 / 3 82 studenter avstängda för AI-fusk – Uppsala strängast 55
- Vilken router? Bahnhof5
- Plats för lite gubbgnäll9649
- Har inga vänner47
- Formaterad hårddisk försöker återskapa0
- Dator kraschar - KERNEL 41 POWER (Orsakad av CS2?)2
- Quiz: Har du koll på det senaste inom processorkylare?68
- Vilken serie såg du senast?1777
- Var femte användare har lämnat X sedan Musk tog över115
- Vad lyssnar du på just nu?13742
- Köpråd: Bredband via fiber8
- Säljes RTX 2070S, GTX 660, RX 3700x, Fractal Design Meshify
- Säljes Homelab Server
- Säljes 2 Auktioner - Lenovo T14 G3 och Nvidia A4000
- Köpes Söker 24-25" 240hz+ 1080p. Ev byte mot 1440p 165hz
- Köpes Desktop/"server"/Workstation, 128gb RAM (t.ex. LGA 2011-system) eller delar till sådant system
- Säljes Playstation 5 - Digital Edition
- Säljes Acer Nitro N50-600 (9400F, 1660 Ti, 32 GB RAM & 500 GB SSD)
- Säljes Utförsäljning: 3 stycken helt nya roomba robotdammsugare säljes till bra pris.
- Säljes Kingston 32GB (2x16GB) DDR5 6000MHz CL36 FURY Beast
- Säljes Gigabyte B650I Aorus Ultra AM5 - garanti
- Ny RAM-sparande funktion upptäckt i Microsoft Edge7
- Quiz: Har du koll på det senaste inom processorkylare?68
- Svenska Embracer säljer Gearbox för 4,9 miljarder kronor14
- Cooler Master Ncore 100 Max – lättbyggt minstingchassi12
- Var femte användare har lämnat X sedan Musk tog över115
- Så byter du till gamla Notepad i Windows 1132
- Microsoft Copilot kan snart köras direkt på datorn14
- Stort steg för Windows på ARM: Google släpper optimerat Chrome26
- Nytt vetenskapligt genombrott kan lösa OLED-inbränning46
- Xbox-chef är öppen för fler spelbutiker på konsol23