オブジェク指向を少しだけ
今回は「オブジェクト指向」を体感することがテーマ。
オブジェクト指向、オブジェクト指向・・・・。プログラミングを勉強していると、やたらと聞く言葉だけど、一体何?・・・という人も多いのではないでしょうか。
で、調べて見ると「オブジェクト指向の三大要素」とは。
1.カプセル化
2.継承
3.多態性
・・・・・。
う~む。
要するに、クラスっていうものによって、プログラム内での「役割り分担」をして、その役割を「受け継ぐ」新しいクラスを作ることもできたりして・・・、結果、利用する側は「同じ命令を出すだけ」でクラス毎イイ感じに仕事をこなしてくれる。
こんな感じの便利なプログラミングの手法なんだけど・・・。
何となくわかるんだけど、でもどこかモヤモヤが残るって感じの人も多いんじゃないでしょうか。
重要なのは用語じゃなくて
大事なことは・・・。
プログラミングを効率よく、なるべく楽に進めるための一つの「流派」みたいなものがオブジェクト指向であるということ。
言葉の意味とか、別に重要じゃない。
この動画を見て、あぁ、これは確かに楽だぞ!ということを感じてもらえたら、うれしいなぁ(≧◇≦)
オブジェクト指向を感じる動画。
https://youtu.be/GmVC0h79pIo
以下のコードは参考資料として。
########################################
##### オブジェクト指向を少しだけ #####
##### ~ クラスを自作する ~ #####
########################################
import tkinter as tk
class Ball:
def __init__(self, x, y, size, movex, movey, color):
self.x = x
self.y = y
self.size = size
self.movex = movex
self.movey = movey
self.color = color
def draw(self):
can.create_oval(self.x, self.y, self.x+self.size, self.y+self.size, fill=self.color)
def move(self):
if key==False :
self.x += self.movex
self.y += self.movey
if self.x<=0 or self.x>=500-self.size :
self.movex *= -1
if self.y<=0 or self.y>=500-self.size :
self.movey *= -1
class Rectangle(Ball):
def draw(self):
can.create_rectangle(self.x, self.y, self.x+self.size, self.y+self.size, fill=self.color)
win = tk.Tk()
can = tk.Canvas(win, width=500, height=500, bg="white")
can.pack()
key = False
def keyPress(event):
global key
key = True
def keyRelease(event):
global key
key = False
win.bind("<Any-KeyPress>", keyPress)
win.bind("<Any-KeyRelease>", keyRelease)
ball = Ball(50, 50, 20, 5, -5, "red")
ball2 = Ball(250, 300, 50, -10, 8, "green")
rectangle = Rectangle(400, 300, 80, -20, -50, "blue")
def drawLoop():
can.delete("all")
ball.draw()
ball.move()
ball2.draw()
ball2.move()
rectangle.draw()
rectangle.move()
win.after(30, drawLoop)
drawLoop()
win.mainloop()