Skip to content

stdio2016/OOPS

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

90 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

OOPS

OOPS! 這個語言好難。但這才是純物件導向語言

OOPS 是 Object Orient Programming System 的簡稱,裡面只有跟物件導向相關的指令,以及必要的標準輸入輸出指令

這裡提供一個 OOPS 語言的直譯器,讓你實際使用 OOPS

版本紀錄

  • 2018/7/17:直譯器寫出來了
  • 2018/7/21:加入垃圾收集機制
  • 2018/7/22:加入堆疊檢查

特色

OOPS 語言中只有一種資料型態,就是物件。OOPS 實現了物件導向的封裝、繼承、多型等特性

物件與類別

OOPS 屬於類別導向 (class-based),所以在 OOPS 裡,要產生物件 (object),你必須要先宣告類別 (class)

類別可以想像成是設計圖,物件則可以想像成是成品。類別敘述物件可以做的事情,按照物件導向設計的用語,這稱為方法 (method)

訊息傳遞

為了讓物件能夠真的做到想要的功能,可以要求物件執行方法,稱作呼叫 (call)。OOPS 的呼叫語法是 obj.methodName(args),其中 obj 是指定的物件,methodName 是方法的名稱,args 是參數

在 OOPS 裡,所有的方法都是公有 (public) 的,這表示,任何的程式都能呼叫這些方法

封裝

在 OOPS 裡,每個物件有自己的變數,稱為成員變數 (member variable),而且只有自己才能更改這些變數,因為它們都是私有 (private) 成員變數

繼承

OOPS 的類別 (class) 是可以繼承的。只要使用繼承,子類別 (subclass) 就可以使用父類別 (parent class) 的方法和成員變數。

如果需要,子類別也可以覆寫父類別的方法,因為所有的方法都是虛擬 (virtual) 的

多型

OOPS 支援多型,而且這大概是最常用到的物件導向特性,因為,啊~OOPS 沒有迴圈,也沒有判斷式語法 (我認為有了這些功能就不是純物件導向了)

編譯方法

請先安裝 bison 和 flex,一定要 bison ,因為我用了 bison 才有的功能 %destructor,還有一定要 flex,因為 lex 年代太久遠,有很多功能都不支援

進入 src 資料夾,然後在命令列下輸入 make

然後就會在資料夾裡面出現 oops 程式了!耶!

要在 Windows 底下編譯這個程式,需要先安裝 Cygwin,可以只安裝裡面的 flex、bison 和 gcc。 編譯輸入的指令要改成 make CFLAGS="-L C:\cygwin64\lib",如果你安裝 Cygwin 的位置是 C:\cygwin64。 還有,要記得把 Cygwin 加進 PATH 環境變數

執行方法

用法: ./oops <source file>

在 Windows 的命令列裡,請改成 .\oops <source file>

執行 OOPS 程式碼