どうも!LSSです!
AndroidStudio+Kotlinでスマホアプリ開発の勉強中です。
無意味にClassを作ってみる、バーチャルブログシリーズ「その6」です!
前回は、「読者登録」機能を模したものを作り、バーチャルブロガーたちが全員、他の人の読者になりました。
で、今回なんですが、ホント今更感はありますが
バーチャルブロガーがやっと記事を書きます!w
記事を書く、とはいっても
そもそも「記事」という概念を用意していないので、用意する必要がありますねw
で、それを言ったら「ブログタイトル」と「ブログジャンル」ぐらいも用意したいところです。
という事で、色々作っていきますね!
新たなクラス「記事」を作ろう!
一口に「記事」といっても最低限、
「書いた日時」「題名」「本文」ぐらいは欲しいところ。
こうした複数の要素を「記事」という一括りにまとめるために、「記事」の概念をクラスとして作成します!
はい。AndroidStudio、Projectウィンドウの中の、
Java内のプロジェクト名を右クリック、
右に出てきた、Newにマウスカーソルを合わせ、
更に右に出てきた、Kotlin File/Classをクリックします。
小さいダイアログが出てくるので、Nameの欄にはこれから作りたいクラス名を入力します。
ここではKijiとしました。(任意の名前。好きに名づけてOK!)
で、Kindは右の▼をクリックして、出てきた候補の中からClassを選択してOKボタンを押します。
Kijiクラスの下地ができました^^
記事クラスの内容を用意します
class Kiji (title:String="無題",body:String="")
とりあえず↑のように書きました。
一応、これだけでも
「タイトルと本文をString型で渡せば記事のインスタンスが作れて、タイトルは省略すれば『無題』、本文は空欄になる」
というクラスとして使えます!
で、ここに「書いた日時」を管理するプロパティを追加します。
書いた日時については、指定するものではなく、実際に記事インスタンスを作成した日時を入れたいので、コンストラクタ(↑の(title:String="無題",body:String="")の部分)には入れずに、
import java.util.*
class Kiji (var title:String="無題",var body:String=""){
val upload_time: Date = Date()
}
{ }の中でvalで宣言しました。
※valで宣言すると、後からの変更はできなくなります。
後から変更可能にしたい時はvarを使います。
とりあえず、記事クラスについてはここで置いておきますね。
Blogger.ktの編集~!
さて、「記事」は各ブロガーが固有で複数持つものなので、Bloggerクラスに、
- ブログジャンル
- ブログタイトル
- 記事、を中身とする配列
の3つのプロパティの追加、そして
- 記事を書く
というメソッドを追加していきます!
package jp.littlestrangesoftware.a20200111_class_test
class Blogger ( var name:String="ななしのごんべ" , var pv:Int=0){
var follow= mutableListOf<Blogger>()
var follower= mutableListOf<Blogger>()
var notice_text=""
var blog_genre = ""
var blog_title = ""
var kiji_list = mutableListOf<Kiji>()
fun hello(): String {
pv++
return "こんにちは!${name}です。よろしく!"
}
fun post(str0:String,str1:String) {
kiji_list.add( Kiji( str0 , str1 ) )
follower.forEach{
it.notice_text += "$blog_title「$str0」\n"
pv++
}
}
fun touroku(aite:Blogger):String{
follow.add(aite)
aite.follower.add(this)
return "${name}が ${aite.name}の読者になりました!"
}
override fun toString(): String {
var s0=""
s0 = "ブロガー名:$name\n"
s0 += "累計PV:$pv\n"
s0 += "購読中:"
follow.forEach{
s0 += it.name + " "
}
s0 += "\n"
s0 += "読者:"
follower.forEach{
s0 += it.name + " "
}
s0 += "\n"
return s0
}
}
↑こんな感じに、がしがしと書きました。
また、赤文字部分が今回追記した部分となります。
var blog_genre = ""
var blog_title = ""
var kiji_list = mutableListOf<Kiji>()
上から順に、ブログジャンル、ブログタイトル、そして記事の配列を宣言しています。
fun post(str0:String,str1:String) {
kiji_list.add( Kiji( str0 , str1 ) )
follower.forEach{
it.notice_text += "$blog_title「$str0」\n"
pv++
}
}
postという名前で記事投稿メソッドを用意しました。
記事タイトル、記事本文を引数として渡すと、
Kiji( str0 , str1 )
にて、記事インスタンスを作成、それと同時に
kiji_list.add
で、その記事をそのブロガーの記事リストの1つとして追加してくれる、という内容となっています。
follower.forEach{
it.notice_text += "$blog_title「$str0」\n"
pv++
}
続けて、記事を投稿したブロガーのfollower(読者)さん達のnotice_text(お知らせ)に、ブログ名と記事タイトルを追記しています。
…ついでに、読者さんの数だけループする処理の中にpv++を書いているので、
「読者さんの数だけPVが増える!」というオマケつき^^
ここで一旦、区切ります^^;
ここから、MainActivity.ktの編集に入り、2つのクラスの動作を確認する段階に入るところですが、だいぶ長~くなってしまいそうなので、今回の記事はいったんここまで!とさせていただきます^^;
「後編」で確認部分を書きます!
…間違っても「中編」として3部構成にならないようにしなくちゃwww
てなとこで、今回はこのへんで!
次回もまた、よろしくお願いします^^