Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/stdio2016/OOPS
OOPS! 這個語言好難。這才是純物件導向語言
https://github.com/stdio2016/OOPS
esolang interpreter object-oriented-programming
Last synced: about 2 months ago
JSON representation
OOPS! 這個語言好難。這才是純物件導向語言
- Host: GitHub
- URL: https://github.com/stdio2016/OOPS
- Owner: stdio2016
- Created: 2016-02-16T06:13:41.000Z (almost 9 years ago)
- Default Branch: master
- Last Pushed: 2019-04-27T12:18:06.000Z (over 5 years ago)
- Last Synced: 2024-04-24T16:15:32.706Z (8 months ago)
- Topics: esolang, interpreter, object-oriented-programming
- Language: C
- Size: 96.7 KB
- Stars: 3
- Watchers: 2
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
- AwesomeInterpreter - OOPS
README
# 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 `在 Windows 的命令列裡,請改成 `.\oops `
執行 OOPS 程式碼