1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

オブジェクト指向は iPhone アプリ開発で、どのように役立っているか

Last updated at Posted at 2020-01-01

##はじめに
先日、
BASIC から来た手続き型おじさんが、「手続き型」「関数型」「オブジェクト指向」について考える。
というタイトルで投稿しました。
この中で、

swift で iPhone アプリを開発する時は、オブジェクト指向を特に意識しなくても存分にオブジェクト指向の恩恵を受けています。

と述べました。
本稿では私が実際に App Store に公開しているアプリで解説します。

##肝硬変重症度Child分類
これは消化器内科・外科医向けのアプリ*で肝硬変重症度 Child 分類が簡単に算出できます。
2010年に公開して以来、4万人以上の方々にダウンロードして頂きました。
総ビリルビンやアルブミンなどの値を選択すると Child 分類と点数が表示されます。
以下がスクリーンショットとソースコードです。
ChildSCRN.gif

import UIKit

class ViewController: UIViewController {
    
    @IBOutlet var bilirubin:UISegmentedControl!
    @IBOutlet var albumin:UISegmentedControl!
    @IBOutlet var pt:UISegmentedControl!
    @IBOutlet var fukusui:UISegmentedControl!
    @IBOutlet var nosho:UISegmentedControl!
    @IBOutlet var childIndex:UILabel!

    override func viewDidLoad() {
        super.viewDidLoad()
    }
    
    @IBAction func selectorChanged(){
        let b = bilirubin.selectedSegmentIndex + 1
        let a = albumin.selectedSegmentIndex + 1
        let p = pt.selectedSegmentIndex + 1
        let f = fukusui.selectedSegmentIndex + 1
        let n = nosho.selectedSegmentIndex + 1
        let childPoint = b + a + p + f + n
        var childGrade = "A"
        switch childPoint {
        case 5 ... 6:
            childGrade = "A"
        case 7 ... 9:
            childGrade = "B"
        case 10 ... 15:
            childGrade = "C"
        default:
            break
        }
        childIndex.text = "Child \(childGrade)  \(childPoint)点"
    }
}

わずか30行足らずのコードです。
bilirubin, albumin, pt, fukusui, nosho などは UISegmentedControl クラスのインスタンスで childIndex は UILabel クラスのインスタンスです。
我々開発者は UISegmentedControl クラスや UILabel クラスの内部ロジックを知らなくても使うことができ(隠蔽)、 UISegmentedControl クラスや UILabel クラスの内部を書き換えることはありません(カプセル化)。

##おわりに
クラス化された UI 部品(オブジェクト)を組み合わせることで、私のようなアマ・プログラマーでも iPhone アプリを作ることができるのはオブジェクト指向の恩恵だと思います。

*医師向けアプリです。
肝硬変重症度Child分類・消化器癌進行度分類

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?