2010年12月21日火曜日

12/21覚書

予定
・classの続き
・開発の流れ
・クラスの続き2
継承・オーバーライド
・php理解度テスト
・データベース
MySQL環境開発

☆システム開発

ウォーターフォールモデル
順に行うモデル
・基本設計
システム化計画を作成する(どこをシステム化したいか。クライアントの要求をリストアップし定義)
プロジェクト実行計画を作成する(費用、作成期間、必要人数)。
・外部設計
画面、出力設計(サイトデザイン、データの出力)。
コード設計。

・内部設計
物理データの設計。
入出力詳細設計。


・製造
プログラムの構造化設計。
コーディング。
単体テスト(買い物とかログイン)。
・各テスト
設計段階で設定された機能、性能用件を満たしているかのテスト。
会員登録→検索→購入→発送。
負荷テスト、障害およびその回復テスト。
クレジット決済中のサーバーダウンで決済はキャンセルできたか。
・運用

プロトタイプモデル
クライアント提出用モデル
・試作を行う。
・要求された内容で満足されているか?
・満足されない場合、改造を行っていく。
・それらを繰り返しながら完成させていく。

スパイラルモデル
・ウォーターフォールモデルで作成し、運用しながらプロトタイプモデルで開発していく。
たいていの企業は今この手法。mixiも。

ラウンドトリップモデル
・分析
・設計
・プログラミング
・各工程をフィードバックしながら循環的に作業を行う。

アジャイル(XP開発手法byWiki
・細かい規定を作らない。
・開発手順、ドキュメントは細かく定義しない。
・短期間に最優先の項目を少人数で進行。
・メリットを失って本質を見失ってグダグダになることも多かったそうな。

☆練習問題 電卓。読解力がないことを痛感。
◆コンストラクタでset出来てる。
◆get、setはわかりやすい(CCSのclassのように)命名したもの。
今回はgetの代わりにplus。
◆つかこのclassでの記述って昨日のとどっちがよいのだろ?
→CSSとHTMLのようにclassと実行ファイルは別々に作成することが多く、
記述の順序は問わない。

class Den{

    #メンバ変数(=宣言)
    private $a;
    private $b;
   
    //コンストラクタ
    function Den($a, $b) {
        $this->a = $a;
        $this->b = $b;
    }
       
    #+返す
    function plus(){
        return $this->a + $this->b;
    }
   
    #-返す
    function minus(){
        return $this->a - $this->b;
    }
   
    #*返す
    function multiply(){
        return $this->a * $this->b;
    }
   
    #/返す
    function division(){
        return $this->a / $this->b;
    }
}

#############
#実行
#############

#インスタンス化
$den = new Den(10,2);

#計算
print "足し算:" . $den->plus()."<br>\n";
print "引き算:" . $den->Minus()."<br>\n";
print "掛け算:" . $den->Multiply()."<br>\n";
print "割り算:" . $den->Division()."<br>\n";

elseifのパターンも勉強しよ。
if並べるよりデータの処理が早いそうな。

☆継承
あるクラスの型を引き継いだ新しいクラスを作ること
基本クラスの機能に対して新たな機能を追加したり、
一部の機能をカスタマイズする目的で行われ、
その他の機能に関しては、基本クラスの機能はそっくりそのまま「継承」する。
extendsを使う。
親クラスをスーパークラス。
子供をサブクラスと呼ぶ。
☆オーバーライド
親クラスのメソッドと同じ名前のメソッドを定義して上書きすること。
class Tokei {
    function getTime() {
    return date('H:i:s');
    }
}
時計クラス(親)に目覚まし時計クラス(子)を継承

class MezamashiTokei extends Tokei {
    function getBell() {
    return  "リンリンリン !";
    }
}

☆復習~

for($i = 1; $i <= 101; $i++){
             if($i%3==0){
            print "&nbsp Fizz!\n";
        }
            if($i%5==0){
            print "&nbsp Buzz!\n";
        }
            if(($i%3 != 0) && ($i%5 != 0)){
            print $i. "&nbsp \n";
        }
            print "<br>\n";
    }

===は型まで正しいか判定する演算子。

☆データベース
データベースとは?
・携帯の電話帳
データベースソフト
・Excel

データベース アドレスなど

MySQL データベースサーバー

SQL データベースソフト

テーブル=Excelのシート
縦列=カラム(column)、フィールド Ex.カラム名、フィールド名
横行=レコード(record)
データベース型には大分類で数値型、日付型、文字列型に分けられる。

読み方はここ
データベース名、テーブル名、カラム名は英数字で指定。

・主キー(プライマリキー)=要任意設定。ただし絶対に重複しないカラムの値。
基本的にひとつのテーブルに主キーが設定される。(主キーがないテーブルもあるが今は除外
通例としてnumber、社員番号

・NULL ぬるぽガッのヌル?
データが空の状態をNULLという。Ex.「NULL値が入っている」=何も入っていない
主キーにはNULL値の許可はありえない。
・ユニーク=ただひとつの、の意。
・ロック(排他制御)
レコード単位でアクセス制限。ほかのレコードはおk。
設定によって変更可能だがレコードごとにかけるのが一般的。

☆SQLとは
・データベースに命令するための言語。
・方言あり、全データベースで共通する標準語をANSI基準という。Ex.有名どころでORACLE
・有料サーバーはサポート有。


・データ操作言語 4つしかないから覚えやすい、きっと。
新規データの追加
insert into テーブル名(カラム名) values 値;
・既存データの検索
SELECT フィールド名 FROM テーブル名 WHERE 条件式 ;
・既存データの更新
UPDATE テーブル名 SET フィールド名 = 値 ;
・既存データの削除
DELETE  FROM テーブル名 WHERE 条件式 ;

代表的なデータ定義言語( DDL )
・新規データベースの作成
CREATE  DATABASE データベース名 ;
・新規テーブルの作成
CREATE  TABLE テーブル名  (フィールド名  データ型) ;
・既存テーブルの変更
ALTER  TABLE テーブル名 ADD フィールド名等 ;
・データベースの表示/テーブルの表示
SHOW  DATABASES ;  / SHOW  TABLES ;

☆MySQLとPHPの関係 シンプル図解
DB←PHP

HTML

☆MySQLに設定 文字化け防止
[mysqld]に追加。
defalt-character-set    = utf8
skip-chsracter-set-client-handshake
character-set-server    = utf8
collation-server        =utf8_general_ci
init-connect            =SET NAMES utf8
[client]と[mysql]と[mysqldump]に
defalt-character-set    = utf8

☆utf-8になってるか調べる
・ MySQLサーバー起動を確認
・プロンプトで
cd c:\pleiades\xampp\mysql\bin
mysql -u root
status
まで実行。
show variables like "char%";
を実行。
文字コードがutf-8になってたら終了…のはずが。
ApacheでMySQLサーバーが動かない…windows再起動も無理。
別の人からiniファイルもらって上書きで成功。