質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
iPad

iPadは、Appleがデザインしたタブレット型コンピュータです。iPadアプリケーションは通常Xcode IDEのObjective-Cで書かれますが、iPadアプリケーションを組むためのほかのツールを使うことも可能です。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

iPhone

iPhoneとは、アップル社が開発・販売しているスマートフォンです。 同社のデジタルオーディオプレーヤーiPodの機能、電話機能、インターネットやメールなどのWeb通信機能の3つをドッキングした機器です。

Swift 2

Swift 2は、Apple社が独自に開発を行っている言語「Swift」のアップグレード版です。iOSやOS X、さらにLinuxにも対応可能です。また、throws-catchベースのエラーハンドリングが追加されています。

Q&A

解決済

2回答

1744閲覧

【Swift】プロパティについての疑問です

oym

総合スコア24

iPad

iPadは、Appleがデザインしたタブレット型コンピュータです。iPadアプリケーションは通常Xcode IDEのObjective-Cで書かれますが、iPadアプリケーションを組むためのほかのツールを使うことも可能です。

iOS

iOSとは、Apple製のスマートフォンであるiPhoneやタブレット端末のiPadに搭載しているオペレーションシステム(OS)です。その他にもiPod touch・Apple TVにも搭載されています。

Swift

Swiftは、アップルのiOSおよびOS Xのためのプログラミング言語で、Objective-CやObjective-C++と共存することが意図されています

iPhone

iPhoneとは、アップル社が開発・販売しているスマートフォンです。 同社のデジタルオーディオプレーヤーiPodの機能、電話機能、インターネットやメールなどのWeb通信機能の3つをドッキングした機器です。

Swift 2

Swift 2は、Apple社が独自に開発を行っている言語「Swift」のアップグレード版です。iOSやOS X、さらにLinuxにも対応可能です。また、throws-catchベースのエラーハンドリングが追加されています。

0グッド

0クリップ

投稿2015/11/11 08:55

Swiftのプロパティは主にストアドプロパティとコンピューテッドプロパティの2種類が存在します。

objective-cの@propertyで宣言するプロパティはSwiftで言うところのコンピューテッドプロパティに相当するかと思います。

そこで疑問なんですがあるクラスに定義されたストアドプロパティにアクセスするという行為は、そのインスタンス変数(ストアドプロパティ)に直接アクセスするということになり、カプセル化の概念から外れるような気がしてなりません。

というのも(プロパティ監視を定義しない)ストアドプロパティと所爲インスタンス変数の違いがわかりません。

ざっくりとした質問で大変恐縮ですが、この辺のことにお詳しい方是非ご教授いただけたらと思います。

よろしくお願い致します。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答2

0

ストアドプロパティにアクセスするという行為は、そのインスタンス変数(ストアドプロパティ)に直接アクセスするということになり、カプセル化の概念から外れるような気がしてなりません。

アクセス出来る = privateにしていない、というだけの話ではないのでしょうか?
アクセスされたくないのなら隠せばいいと思います。

ストアドプロパティと所爲インスタンス変数の違いがわかりません

クラスに関する変数と、インスタンスに関する変数、ということじゃなくて?

ちなみに、この質問を見て初めてストアドプロパティとかコンピューテッドプロパティという言葉を知りましたw

投稿2015/11/12 01:29

fuzzball

総合スコア16731

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

oym

2015/11/12 03:23

>アクセス出来る = privateにしていない、というだけの話ではないのでしょうか? >アクセスされたくないのなら隠せばいいと思います。 表現不足ですみません。 アクセスされたくないという話ではなくて、アクセスできてしまうのが問題ではないのかな?という疑問です。 結局プロパティでもインスタンス変数でもprivateを指定するかどうかはプログラマ次第なので。 >クラスに関する変数と、インスタンスに関する変数、ということじゃなくて? 静的 or 動的という観点の疑問ではありません。
fuzzball

2015/11/12 03:48

どうやら難しいお話のようで‥。
guest

0

ベストアンサー

インスタンス変数に直接アクセスできる状態は、当然カプセル化しているとは言えません。

プロパティとインスタンス変数は、Swiftの文法上あまり区別がありません。
全ては、使い方しだいです。

投稿2015/11/11 15:13

Stripe

総合スコア2183

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

oym

2015/11/12 03:27

>プロパティとインスタンス変数は、Swiftの文法上あまり区別がありません。 やはりそうですよねぇ。。。 プロパティはあくまでカプセル化を実現する上で、インスタンス変数に直接アクセスさせないためのアクセサ(仲介)が主役割だという認識でした。 そういう意味ですごくストアドプロパティの存在が気持ち悪いんですよねぇ。。。
Stripe

2015/11/12 09:05

カプセル化とは特定のプログラミング言語に依存しない概念で、実質的な意味で内部領域へのアクセスができない状態を言います。 なので、プロパティ(アクセッサメソッド)によって内部領域にアクセスできる状態もカプセル化しているとは言えません。
oym

2015/11/12 15:10

確かにオブジェクト指向の概念の一つですもんね ご回答ありがとうございました
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問