Ohjelmointi 1, syksy 2022, luento 16

# L16

16. luento: ti 18.10.2022 klo 14:15-16:00: Oliot

# vb1

Muu sisältö: listat, silmukat, muuttujien näkyvyys, hiiren kuuntelu (Jypeli)


# git

Luentoesimerkkien haku versionhallinnasta

  • siirry hakemistoon johon haluat esimerkit

  • ekalla kertaa (tai jos olet ennen su 19.10 hakenut niin tuhoa vanha)

    git clone https://gitlab.jyu.fi/tie/ohj1/2022s/esimerkit.git .

    jatkossa samassa hakemistossa

    git pull
  • kopsi tuo hakemisto tai ainakin sinua kiinnostava alihakemisto toiseen paikkaan

  • periaatteessa tuonne syntyneen solutionin voi avata sellaisenaankin, mutta jos siihen tekee muutoksia, niin seuraavalla pull-komennolla tulee helposti konflikti

Tiedotusasiaa

Muuttujien näkyvyys

# nakyvyys

Luokat ja perintä

# kielista

Esimerkkejä kielistä

Luokkapohjainen:

  • Java
  • C#
  • C++ (tosin rakenteista ohjelmointia voi tehdä ilmankin luokkia)
  • Kotlin (paljon myös funktionaalisen kielen piirteitä)
  • Swift
  • Delphi (Pascalin käytetyin "oliolaajennus")
  • Python (???)
  • TypeScript (tosin voi kirjoittaa myös suoraan JavaScriptiäkin ja silloin menee tuonne proton puolelle)

Oliosuuntautunut:

  • Smalltalk

Prototyyppipohjainen:

  • JavaScript

Funktonaaliset:

  • Haskell
  • F#

HangryDog

Minimaalinen Vector-luokka

  • Demojen harjoittelu, d7 klikkaa auki Näytä koko koodi ja katso Vector -luokan miniversiota

    public class Vector
    {
        private double x, y;
        public Vector(double x, double y) { this.x = x; this.y = y; }
        override public string ToString() { return $"({x,5:0.00},{y,5:0.00})"; }
        public static double Distance(Vector p1, Vector p2) {
            double dx = (p1.x - p2.x), dy = (p1.y - p2.y); return Math.Sqrt(dx * dx + dy * dy);
        }
    }
  • Demo 7: Pisteet.cs ja tuolta Vector ja RandomGen-luokat

Elaimet

  • Elaimet.cs - pohjaksi Kissa ja Koira-luokka
# Elaimet
# kissattarkka
# kissatnorm

Kysymyksiä

# ElaimetPerimalla

Eläimet Jypeliin

These are the current permissions for this document; please modify if needed. You can always modify these permissions from the manage page.