2010年12月24日金曜日

Ubuntuサーバで文字化け解決

フィルターで文字コードの設定を変更、

Tomcatの所で文字コードの変更を行えない設定だったので
userSetの変更を行う、

また、SQLのドライバーが内と怒られる、
調べてみると、WEBINFのlibにドライバーを置いていなかったのが分かる、

2010年12月23日木曜日

Mysqlのテーブル名が小文字になる、

Mysqlでは
CREATE TABLE `COMPANY` (
とsqlを実行してもcompanyとなってしまう。

これを変更するには
my.iniファイルの[mysqld]の項目に
lower_case_table_names=0を追加して保存、
Mysqlを再起動で解決!!

2010年12月14日火曜日

Java Dao・Dto・Beanの役割分担のマトメ

Controlクラス{
①request.getParameterのパラメータによって処理の切り替え、
②Daoを生成し、必要なDaoメソッドの実行、
③DaoからListオブジェクトがリターンされるのでセッションやrequestに格納
④ディスパーチ

Daoクラス{
①DBクラスのコネクションとステートメントメソッドの呼び出し、
②Sql文の作成、
③Sql文の実行、
④ループでリザルトの一行ずつの結果をDtoの必要メソッドで実行、
⑤ループ毎でDtoからリターンされるBeanオブジェクトをList.add(Bean)
⑥Listを呼び出し元のControlクラスにリターン


Dto{
①Daoで一行毎のレコードが渡ってくるので、
②一行毎のBeanオブジェクトを生成
②Beans.setId(リザルト.getInt("ID"));
③一行毎のBeansオブジェクトを呼び出し元のDaoにリターン


Beansクラス{
set・getメソッドを記述



2010年12月9日木曜日

UbuntuのMysql外部アクセス設定

①Ubuntuのmysqlポートの解放、
②外部からの接続をOKにする
sudo vim /etc/mysql/my.cnで
を#bind-address       = 127.0.0.1 ←コメントアウト 
③$>sudo /etc/init.d/mysql restart ←再起動
④ mysql>grant all privileges on *.*
to ●●●●@"%" identified "●●●●"  with grant option;
↑↑↑↑↑↑↑↑ 1番がユーザ名2番目がパスワード↑↑↑↑↑↑
⑤mysql>flush privileges;←設定反映 
⑥ sudo /etc/init.d/mysql restart←再起動
 
これで外部からMySqlが使えるはずです。
 
  

Java・DTO・DAO・Beansを自分的にマトメ

★★★★処理内容★★★★★
JspよりIDとパスが入力されるのでIDとパスが正しいのか返す、
★★★★処理の流れ★★★★
①IDとパス入力
②コントロールクラスが値を受け取り、
③Beanクラスを呼び出す
④BeanクラスはIDを受け取り、DaoにIDを渡す、この時の戻り型はDto
⑤DaoクラスはSelect文でIDに紐づく値を実行
⑤DaoはDtoクラスを呼び出しSelect文の値をDtoのフィールドにセット
⑥BeanはDto型で戻ってきた値を、Dtoのgetメソッドを使いBeanのsetメソッドでセット、
⑦Beanに格納されたパスを入力されたパスが同じか調べて結果を返す
⑧jspにディスパーチ

こんな感じかな、
わたしは説明へたですが 、

下記の本はUMLの書き方やオブジェクトなど丁寧で分かりやすく、
2度ほど読むとオブジェクト指向やUMLの感じがつかめるを思います。

*追伸・UML等を勉強中です。

2010年12月7日火曜日

Java セッションのお勉強

■javax.servlet.http.HttpServletRequest.getRequestURI()
本来アクセスしようとしたURLを取得
 
■/Cus/で始まる全てのURLにマッチします。*で 
<filter>
    <filter-name>AuthFilter</filter-name>
    <filter-class>AuthFilter1</filter-class>
  </filter>
  <filter-mapping>
    <filter-name>AuthFilter</filter-name>
    <url-pattern>/Cus/*</url-pattern>
★.jspや*.cgiと記述すれば指定したファイルにフィルターが掛かります 
★複数のフィルタがマッチした場合にはどうなるでしょうか。
その場合にはマッチしたフィルタ全てが起動されます。起動される順番は、
設定の順番が有線

2010年12月3日金曜日

PlayFrameworkをGoogleAppEnginにアップロード

/appengine-java-sdk-1.4.0/bin/appcfg.cmd update test-gae.warのコマンドでアップ、

今度はLinuxの環境でPlayを挑戦してみようとおもいます

追伸 OPENJAVA環境のGCJ変更につまずいています。

2010年11月17日水曜日

1台のPCにfedora11を2つインストール デュアルブート

1台のPCにfedora11を2つインストールに成功、

http://www.linuxmania.jp/linux_multiboot.htmlを参考におこないました。

2010年11月9日火曜日

UbuntuのCVSを調査

UbuntuのCVSを調査する機会がありましたのでちょっとメモってみます。

Concurrent Versions System(コンカレント・バージョンズ・システム)の事を
CVSと言うそうです。

■特徴として
サーバ上のファイルと自分の持っているファイルの差分のみを転送するだけで最新版を手にいれることが出来る、

■用語
①リポジトリとは
サーバにプログラムを溜めておく場所、
リポジトリから自分のローカルPCにソースを落として作業すると言えば分かりやすいかな

②コミットとは?
リポジトリに作業の終わったソースをアップする事をコミットといいます。
つまりリポジトリに差分情報をアップデートする。

③チェックアウトとは?
リポジトリから初めてソースを自分のローカルPCに取り出す事をチェックアウトという

④アップデートとは?
他のだれかよりリポジトリが更新され、そのリポジトリソースを取り出し最新版に保つ事をアップデートと言う、

⑤ロック方式とは?
他のだれかがリポジトリからソースを取り出し編集作業を行っている時、その他の人は
そのソースを編集できないようにすることをロック方式

⑥コピー・マージ方式
編集完了後に変更した部分をシステム側に反映させる事をマージ、
その他の人も編集作業はできるが、編集箇所の競合が起きた時はマージする時点で解決するか、
一般的には、変更内容が競合する旨をユーザーに知らせ、内容を確認、修正させるの方法がとられることが多い。

⑦バージョン(リビジョン)番号

編集ファイルのバージョンの番号の事、
バージョン番号だけでなく、日付、時刻によってファイルをチェックアウトすることも可能になる。

2010年11月8日月曜日

GoogleMap 経由地6つとスタートとゴールを最短で結ぶプログラムのマトメ

■この部分にデフォルトのセンター位置やMapのタイプを記述 
var myOptions = {
      zoom: 13,
      mapTypeId: google.maps.MapTypeId.ROADMAP,
      center: starts
    }
■myoptionを渡します
map = new google.maps.Map(document.getElementById("HTMLに表示するタグ"), myOptions);

■線を引きたい点と点を記述
             var flightPlanCoordinates = [
                 new google.maps.LatLng(36.63615817578634,137.18512058258057),  //富山空港周辺
                 new google.maps.LatLng(36.64442262062068,137.18276023864746)];

■new google.maps.Polylineのpathに上記のflightPlanCoordinatesを渡す
            var flightPath = new google.maps.Polyline({
              path: flightPlanCoordinates,
fillColor: '#ff0000'})
■ 線を描くMapを渡す
flightPath.setMap(map);

■ランドマークを記述
            var stations = [
              ['富山総合公園', 36.638833,137.1981248],
              ['富山郵便局', 36.669182,137.234817],

■ランドマークをjQuery.eachでループ
            jQuery.each(stations, function()
            {
                var latlng = new google.maps.LatLng(this[1], this[2]);

■経由地を代入

     routes1 = document.getElementById("route1").value;//経由地1
     routes2 = document.getElementById("route2").value;//経由地2
     routes3 = document.getElementById("route3").value;//経由地3

■上記の経由地をwaypointに渡す
          waypoints: [
                      {
                      location:routes1, //経由地変数1
                      stopover:false
                      },{
                      location:routes2,//経由地変数2
                      stopover:false
                      },{
                      location:routes3,
                      stopover:false
                      }],

■上記の経由地等をdirectionsService.routeに渡す


            directionsService.route(request, function(result, status)
            {
                SetPolyline(result.routes[0].overview_path);

■ここでスタート地から経由地・ゴールまでの線を引きます
function SetPolyline(routePath)


Google App Engine を無料で使ってみた

googleアカウントは持っていたので、

というか、googleBlog書いてるから当たり前かですね、

http://code.google.com/intl/ja/appengine/
からGoogle App Engineの登録を行う、

http://code.google.com/intl/ja/appengine/docs/java/gettingstarted/
スタート ガイド: Javaがあるので、
それをみて、「Hello」を表示してみた、

ここまでは順調、eclipseのプラグインもあるのでたすかります。
■下記のようなソースを記述し、サーバにアップすると
googleアカウントのログインを呼び出し、user.getNickname()の部分で
アカウント名を呼び出す事が出来ます。
「Hello, ●●●●●●」
のように!!

package guest1;
import java.io.IOException;
import javax.servlet.http.*;
import com.google.appengine.api.users.User;
import com.google.appengine.api.users.UserService;
import com.google.appengine.api.users.UserServiceFactory;

@SuppressWarnings("serial")
public class Guest1Servlet  extends HttpServlet {
    public void doGet(HttpServletRequest req, HttpServletResponse resp)
    throws IOException {
        UserService userService = UserServiceFactory.getUserService();
        User user = userService.getCurrentUser();

        if (user != null) {
            resp.setContentType("text/plain");
            resp.getWriter().println("Hello, " + user.getNickname());
        } else {
            resp.sendRedirect(userService.createLoginURL(req.getRequestURI()));
        }
    }
}


2010年11月5日金曜日

GoogleMap 円を書く

 new google.maps.Circle({
center: new google.maps.LatLng(lat, lng),
  fillColor: '#ff0000',   // 塗りつぶし色
  fillOpacity: 0.1,       // 塗りつぶし透過度(0: 透明 ⇔ 1:不透明)
map:mapObj,
  radius: 5000,
  strokeColor: '#ff0000', // 外周色
  strokeOpacity: 1,       // 外周透過度(0: 透明 ⇔ 1:不透明)
  strokeWeight: 1         // 外周太さ(ピクセル)
 });

ジオコーディング

ジオコーディングとは、住所を地理的な座標に変換する処理のことで、あなたはマーカーの配置や地図の表示に利用することができます。
(例えば"東京都千代田区永田町1-7-1"は、緯度:35.6758907, 経度:139.7448603となります)





http://sites.google.com/site/gmapsapi3/Home/services#Waypoints


に詳しく説明がある見たいです。

2010年11月4日木曜日

GoogleMapAPIを導入

まずは、手始めに
 
<html>
  <head>
    <title>Hello world in Google Maps API version3</title>
    <meta name="viewport" content="initial-scale=1.0, user-scalable=no" />
    <script type="text/javascript"
      src="http://maps.google.com/maps/api/js?sensor=false"></script>
    <script type="text/javascript">
      function initialize() {
        var centerPos = new google.maps.LatLng(35.658613, 139.745525);
        var mapOptions = {
          zoom : 18,
          center : centerPos,
          mapTypeId: google.maps.MapTypeId.ROADMAP
        };
        var map = new google.maps.Map(document.getElementById("map_canvas"), mapOptions);
      }
    </script>
  </head>
  <body onload="initialize()">
    <div id="map_canvas" style="width:100%;height:100%"></div>
  </body>
</html>
解説 
■上記の値をセンタにする 
var centerPos = new google.maps.LatLng(35.658613, 139.745525);
 ■オプション指定
 var mapOptions = {

          mapTypeControl : true,//表示タイプ
          scaleControl : true,//距離表示
          navigationControl :  true//+ーのズーム表示
disableDefaultUI : true,//デフォルトの指定を無効

2010年10月5日火曜日

Windows TOMCAT6 + MySql + eclipse 環境でデータソース

 ■前準備
①C:\Tomcat 6.0\libにmysql-connector-java-5.1.13-bin.jarをコピー
②eclipseの各プロジェクトからプロパティ⇒Javaビルドパス⇒外部JARの追加⇒mysql-connector-java-5.1.13-bin.jarを選択し追加⇒OK

■C:\Tomcat 6.0\conf\Catalina\localhost\Test.xmlのTest.xmlに下記のxmlを追加、
私の環境だとeclipseでプロジェクトを作った際、自動でファイルが出来ていますので
そこに追加
<Context path="/Test" reloadable="true" docBase="C:\eclipse\workspace\Test" workDir="C:\eclipse\workspace\Test\work" >//ここは各自違います!!
    <Resource name="jdbc/tests"//データソース名
       auth="Container"
        type="javax.sql.DataSource"
        username=""//sqlのユーザ名
        password=""//sqlのパスワード名
        driverClassName="com.mysql.jdbc.Driver"
        url="jdbc:mysql://localhost:3306/test"//mysqlのURLとデータベースを記述、今回はtestデータベースを選択、
    />
</Context>

■Jspソースの記述、今回はeclipseのTestプロジェクトのデフォルトパッケージにjspを置いています。
<%@ page contentType="text/html; charset=Windows-31J"%>
<%@ page import="java.sql.*"%>
<%@ page import="javax.sql.*"%>
<%@ page import="javax.naming.*"%>
<%
Context ctx = new InitialContext();
DataSource ds = (DataSource)ctx.lookup("java:comp/env/jdbc/tests");//ここはxmlのResource nameと合わせて記述

%>
<% System.out.print(ds); %>//デバック用
<%
Connection conn= ds.getConnection();
Statement pstmt = conn.createStatement();
String sql = "SELECT * FROM ACCOUNT";
ResultSet rs = pstmt.executeQuery(sql);
while(rs.next()){ %>
    <%=rs.getString("NAME")%><BR>
<%}
pstmt.close();
rs.close();
conn.close();
%>

2010年10月4日月曜日

ロック

クライアントが同時にアクセスし、2つの処理が同時に実行された場合に情報の整合
性が取れなくなるのを防ぐ処理方法、


select * from ACCOUNTS WHERE IP=1 FOR UPDATE//FOR UPDATEでロックを行い、コミットでロック解除を行う、

Myql トランザクションのオートコミットをOFF

        Connection con =  DBManager.getConnection();
        con.setAutoCommit(false);//オートコミットをOFF

        String sql = "UPDATE ACCOUNT " + "SET MONEYS=MONEY-1000 WHERE IP=1" ;
        smt.executeUpdate(sql);

        sql = "UPDATE ACCOUNT" + "SET MONEYS=MONEYS-1000 WHERE IP=10" ;
        smt.executeUpdate(sql);


        smt.cancel(); //上記の二つのクエリが処理出来たならコミットする
        con.commit();
        con.close();

2010年9月27日月曜日

Jsp/Servletのスコープ

リクエストスコープの有効範囲は1つのリクエストが終わるまでの間です。
セッションスコープは同じクライアント間が有効範囲です。
アプリケーションスコープはWebアプリケーション内で有効です。リクエストやセッションが違っても有効です。また、アプリケーションコンテキストと呼ばれます。

■getAttribute(String name)での値はObjectで帰ってくるので、必要に応じてキャスト
行う、

■セッションIDとカウンター
package session;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import sun.net.www.content.text.plain;

public class CounterServlet extends HttpServlet
{
    public void doGet(HttpServletRequest request,
        HttpServletResponse response)
        throws ServletException, IOException
    {
        HttpSession session = request.getSession();//セッションの取得
       
        Integer count = (Integer) session.getAttribute("count");//セッションかたcountの取得
       
        if(count == null)//nullなら0を代入        {
            count = new Integer(0);
        }
        count = new Integer(count.intValue() + 1);//カウントUP
       
        session.setAttribute("count", count);//セッションに格納
        response.setContentType("text/html");
        PrintWriter pw = response.getWriter();
       
        pw.print("<p>sessionIdは" + session.getId() + "</p>");//セッションIDの取得       
        pw.print("<p>" + count + "</p>");//カウントの表示       
    }
   
}

Jsp/Servletでフィルター処理

■フィルター処理
public class TestFilter implements Filter
{
    public void doFilter(ServletRequest request, ServletResponse response,
            FilterChain chain) throws IOException, ServletException
    {
        request.setCharacterEncoding("Windows-31J");//文字コードの設定
        response.setContentType("text/plain; charset=Windows-31J");//文字コードの設定

chain.doFilter(request,response);//次の処理に渡す

■XMLの記述

    <filter>
        <filter-name>TestFilter</filter-name>
        <filter-class>filter.TestFilter</filter-class>
    </filter>
   
    <filter-mapping>
        <filter-name>TestFilter</filter-name>
        <url-pattern>/*</url-pattern>//すべてのファイルにフィルターを掛ける
    </filter-mapping>

jsp/servletで入力値のチェック

■数値チェック,intに変換し数値で無い場合はキャッチで受け取る
int year = Integer.parseInt(yearStr);
catch (Exception e)

■emailの書式チェック
String pattern = "[\\w\\.\\-]+@([\\w\\-]+\\.)+[\\w\\-]+";
if(text.matches(pattern))
{
 マッチ処理
}
else{マッチしない処理}

2010年9月16日木曜日

JspとServletとJavaBeansの連携で分かった事

■■■■■■■■■■■サーブレットで大事な事■■■■■■■■■■■■■■

 リクエストに渡すスコープ名request.setAttribute("cb",cb);とJsp部分でJavaBeansで受け取る
<jsp:useBean id="cb" class="mybeans.CarBean"の部分の名前は合わせておく、
public class Sample7 extends HttpServlet
{
    public void doGet(HttpServletRequest request,
            HttpServletResponse respons)
    throws ServletException
    {
        try
        {
            //GETで名前の受け取り
            String tmp = request.getParameter("cars");
            String names = new String(tmp.getBytes("8859_1"),"JISAutoDetect");
       
            //BeansにCarの名前をセット
            CarBean cb = new CarBean();
            cb.setCarName(names);
            cb.makecardata();
       
            request.setAttribute("cb",cb);//この部分

2010年9月14日火曜日

フィルター処理の記述、

■サーブレット表示のソース
import java.io.*;
import java.util.*;
import javax.servlet.*;
import javax.servlet.http.*;

public class SampleFilter extends HttpServlet
{
    public void doGet(HttpServletRequest request, HttpServletResponse response)
    throws ServletException
    {
        try
        {
            response.setContentType("text/html;charset=Windows-31J");
            response.getWriter().println("<p>Servlet処理です</p>");
        } catch (Exception e)
        {
            // TODO: handle exception
            e.printStackTrace();
        }
    }
}


■フィルター表示のソース

import java.io.*;
import java.util.*;
import javax.servlet.*;

import javax.servlet.*;

import javax.servlet.http.*;


public class FilterSrc implements Filter
{
    public void doFilter(ServletRequest request,ServletResponse response,FilterChain chain)
        throws IOException,ServletException
        {
        try{
            response.setContentType("text/html;charset=Windows-31J");
            PrintWriter pw = response.getWriter();
            pw.println("フィルタ処理");

            chain.doFilter(request, response);
        }catch (Exception e) {
            // TODO: handle exception
        }
        }
       
    public void init(FilterConfig filterConfig) {
        // TODO 自動生成されたメソッド・スタブ
       
    }
    public void destroy() {
        // TODO 自動生成されたメソッド・スタブ
       
    }

}

■web.xmlの記述

    <servlet>
        <servlet-name>SampleFilter</servlet-name>
        <servlet-class>SampleFilter</servlet-class>
    </servlet>
    <filter>
        <filter-name>FilterSrc</filter-name>
        <filter-class>FilterSrc</filter-class>
    </filter>
    <servlet-mapping>
        <servlet-name>SampleFilter</servlet-name>
        <url-pattern>/FilterSrc/SampleFilter</url-pattern>//ここをそろえておくことが味噌
    </servlet-mapping>

    <filter-mapping>
        <filter-name>FilterSrc</filter-name>
        <url-pattern>/FilterSrc/SampleFilter</url-pattern>
//ここをそろえておくことが味噌
    </filter-mapping>
そのたポイント■
①フィルターのソースのメソッドはdoFilter()です、その内部で処理を行いましょう、
FilterCainのdoFilter()メソッドの処理が終わると次の処理が行われます
②Filterを実装
③doFilterの引数はServletのリクエスト、レスポンス、FilterChainの3つ
④実装したFilterのinitやdesroyのメソッドも忘れずに

コンテキストとは!!サーブに画面線維の注意点

アプリケーションサーバは各階層をコンテキストという単位で管理している、
コンテキストルートはJspでは
request.getContextPath()
で呼び出します。
requestHttpServletRequestクラスの暗黙オブジェクトで、Jspではデフォルトで
使えます。

■■■■■getRequestDispatcherdeでサーブに画面線維の注意点■■■■■■■■■■■■
(    RequestDispatcher rd = sc.getRequestDispatcher("/ExInclude2Servlet");

getRequestDispatcherdeを使ってサーブレットに画面線維をする場合は、
web.xmlに登録しておかなければいけません

■■■■■forwardメソッドとsendRedirectメソッドとの違い■■■■■

forwardは(独立しない)リクエスト処理
sendRedirect (独立した)リクエスト処理

2010年9月13日月曜日

ServletでHTMLと日本語を書き出し

■■■■■■■■HTMLを書き出す時■■■■■■■■■■
response.setContentType("text/html;  charset=Windows-31 ");
はhtmlの書き出しと、エンコーディングを Windows-31で行います。

■■■■■■■■テキストを書き出す時■■■■■■■■■■
response.setContentType("text/plain; charset=Windows-31J");

★上記を書かないと


?????????
 
な感じになります 

Jsp記述色々

■■■■■■変数宣言■■■■■■
<%! int i = 0; %>はJspが初めて呼び出された後、共有されます
<% i =  i++; %>
ですので、iの変数はアクセスの間カウントUPされます。

■■■■■■サーブレットを作成はHttpServletを継承■■■■■■
サーブレットを作成する時は、HttpServletを継承します。
 extends  HttpServletと記述する

■■■■■■doGet()メソッド■■■■■■
HttpServletのオーバーライドメソッド
ブラウザーがら リクエストで受け取り、レスポンス で返します、

■■■■■■例外処理■■■■■■
レスポンスの書き込みはIOExceptionでスローし、
他の例外処理は、ServletExceptionでラップてスローします。
例: 
try
{
例外の発生がある処理
}
catch(SomeException e)
{

throw new ServletException(e);
}
■■■■■■web.xml■■■■■■
<web-app>
<servlet>

 <servlet-name>TestServlet</servlet-name>//サーブレットの名前
  <servlet-class>TestServlet</servlet-class>//サーブレットのクラス、パッケージがある
//場合はパッケージに合わせましょう
</servlet>
<servlet-mapping>
 <servlet-name>TestServlet</servlet-name>//サーブレットの名前

 <url-pattern>/testservlet</url-pattern>//ブラウザからのurl
</servlet-mapping>
<web-app>
 ■■■■■■web.xmlのワイルドカード■■■■■■
/test/*
*.txtなどあります

Jspで配列中の名前表示

 jspで配列中の名前表示ソース■
<%@ page language="java" contentType="text/html; charset=windows-31j"
    pageEncoding="windows-31j"%>
   
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=windows-31j">
<title>Insert title here</title>
</head>
<body>
<%
String []names = {"大田","川崎","永浦","西橋"};
int i;
int count = names.length;
for(i = 0; i < count; i++)
{
out.println(names[i]);
}

%>


</body>
</html>

★★★★★★★★実行結果★★★★★★★★
大田 川崎 永浦 西橋

 ★★★★★eclipse画面★★★★














★★★★★表示URL★★★★
http://localhost:8080/Jsp10_1_1/p_intro.jsp

2010年9月1日水曜日

JPanel

コンテナにパネルを追加してボタンを追加、

JButton jb1 = new JButton();
JButton jb2 = new JButton();


setLayout(new GridLayout(2,1)); //コンテナにグリッドを作成
Jpanel jp1 = new JPanel();//パネルの作成
Jpanel jp2 = new JPanel();
jp1.add(ボタンオブジェクト);//パネルにボタンの追加
jp2.add(ボタンオブジェクト);
add.(jp1);//コンテナにパネルを追加
add.(jp2);

2010年8月30日月曜日

イベント

GUIではボタンを押したときに処理する事を、「イベント処理」event handlingといいます。

ボタンが押された時の処理記述、

bt.addActionListener(new TestActionListener());
↓↓↓↓↓↓↓↓
 class TestActionListener implements Actionlistener
    public void actionPerformed (ActionEvent e)
    {
        処理内容
     }
 ■actionPerformedメソッドはActionlistenerインターフェイスクラスのメソッドです。
■イベントを処理するクラスをリスナ
■イベントが発生するクラスをソース、たとえばボタンがソースになります。
■MouseAdapterはMouseListenerを実装した便利なクラスです。
■キーボードからの入力をした時、KeyAdapterを使います 、

KeyEventクラスのe.getKeyCode();でキーボードからの入力を

int型で受け取ります。

■GUIのイベントはWindowはwindowの閉じるボタンをおした時や、縮小や拡大などのイベントを行い
ます。

2010年8月23日月曜日

スレッドの基本

スレッド=複数の処理、
タスク=元々は軍事用語、空母や補給機などの役割をここに分けたもの、


実装方法は、
class スレッド実装クラス extends Thread{}


メインメソッド
 スレッド実装クラス cla = new スレッド実装クラス();
cla.start();//スレッド起動


↓↓↓↓↓↓↓↓↓

class スレッド実装クラス

public void run(){処理内容}


■処理を一秒間毎に処理する場合はtry&catch
のを記述し、
thread.sleep(1000);//と記述する、

■インターフェイスによるスレッドの実装
implements Runnable

を実装した、クラスを呼び出すには、
クラスのインスタンスを作る、

コンストラクタの引数でクラス変数を渡す、
Threadクラス変数.start();//スレッドの起動

■複数のスレッドが共有するフィールドの処理をする時は、メソッドに
synchronizedを指定する。

2010年8月20日金曜日

ArrayListは1次元
HashMapはキーと値を持つことが出来る、

入出力

System.out==標準出力;
System.in==標準入力;

■入出力の概念をストリームと言います。

ファイルを開いて書き込み、
new PrintWriter printwriter = new PrintWriter
(new BufferedWriter
(new FileWriter("text1.txt")))
System.exit(1)とはプログラムを終了する、番号はAPIで確認しましょう
■args[0]はコマンドラインからの入力を受け取ります。スペースで渡す時はスペースで区切りましょう。

2010年8月19日木曜日

import

/**
 *
 */
package rensei;

import static java.lang.Math.*;//(16)解答
import java.util.*;//(17)解答

import yjPlactice.Today;

/**
 * @author****
 *
 */
public class impTest1617 {

    /**
     * @param args
     */
    public static void main(String[] args) {
        // importのテストをしてみますね。
        double dbl1 = 0.0;
        double dbl2 = 0.0;

        dbl1 = 2.0;
        dbl2 = sqrt(dbl1);//6行目があるので、Math内のメソッドが単純名で呼べる

        System.out.println("root2 = " + dbl2);
        System.out.println(PI); // 23行目同様6行目があるので、
        //Math内のフィールド「PI」が単純名で呼べる

        Random random = new Random();
        // 7行目があるので、java.util内のRandomクラスが、単純名で使える。
        int r =random.nextInt(); // Random内のメソッドは任意
        System.out.println(r);
        // 上の行は、System.out.println(random.nextInt());
        // でもよいかな。int r がいらなくなる。

        Today t =new Today();
        System.out.print(t.getClass());
    }

}
/*実行結果****
root2 = 1.4142135623730951
3.141592653589793
186691675
class yjPlactice.Today
*/

例外処理

try
{
例外処理が起きそうな記述 ;//例外が発生した場合tryの以下の処理が行わない、
}
catch
{
例外処理がおきた時の処理;
}
finally
{
必ず行う処理;
}
■catchブロックが見つからない場合、呼び出し元のメソッドに戻ります。
必ず行いない処理はfinallyに記述しておきましょう。

IOExceptionは出入力のエラー、
ArrayIndexOutOfBoundsExceptionは不正インデックスによる配列参照 
など例外の種類によって使います。
Exceptionは例外処理のサブクラスを持っていいます。
処理中にExceptionIOExceptionより先に記述しておくと、すべて例外エラーが
受け取られますので、記述の順番に注意して下さい。
 

2010年8月18日水曜日

パッケージ

■パッケージの呼び出し
package パッケージ1;

public class クラス1{}


***********
上のパッケージを違うパッケージからの呼び出し
import パッケージ1;

 クラス1 cla1= new クラス1();//インポートしている
 クラス1 cla1= new パッケージ1.クラス1();//インポートしていない

2010年8月17日火曜日

eclipse導入

integrated
Development
Environment

統合された開発環境だそうです。

2010年8月5日木曜日

継承とインターフェイスの実装をやってみた、確かに便利です。

■親クラスのCarクラスに基本性能でガソリン量とナンバーを定義して、子クラスのF1クラスにターボとコースのを定義しています。追加で、
今回は、私がインターフェイスの動きを見る為に、インテーフェイスにのターボとコースの2つのインターフェイスを定義し、子クラスのF1クラスに実装しています。
*インターフェイスのtabを実装したクラスはshowTb()を必ず実装し、
*インターフェイスのcosを実装したクラスはcoss()を必ず実装し、大規模開発時にこのような
テンプレート的な物があると大変便利です。
interface tab
{
    int a = 777;
    void showTb();//ターボ力表示、実装したクラスはオーバーライドするメソッドが要ります
}

interface cos//コース表示メソッド
{
    void coss();
}
//■■■■■■Carクラス、スーパー■■■■■
class Car
{
    private int gas;
    private int num;
   
    public Car(int g,int n)
    {
        gas = g;
        num = n;
    }
    //*******ガス量:ナンバーメソッド******
    public void show()
    {
        System.out.println("ガス量:" + gas + "ナンバー:" + num);
    }

}
//■■■■■■F1クラス、サブ■■■■■
class F1 extends Car implements tab,cos//インターフェイスの実行
{
    String korsu;//F1のコース
    int tab = 10;//ターボに使う値
    public F1(String k,int g,int n)
    {
        super(g,n);//基本の値
        korsu = k;//コースの値
    }
    //*******コース名****
    public void showKorsu()
    {
        System.out.println("コース:" + korsu);
    }
   
    //******ターボ*****
    public void showTb()//インターフェイスにオーバーライドされるメソッド
    {
        System.out.println("ターボ:" + tab*a);
    }
   
    public void coss()//インターフェイスcosのcoss()メソッドにオーバーライドされるメソッド
    {
        System.out.println("コース:" + korsu);
    }
}

//■■■■■■メインメソッド■■■■■
class SapleInterface
{
    public static void main(String args[])
    {
        F1 f1 = new F1("プロス",100,7);
        f1.show();
        f1.showTb();//インターフェイスのメソッド実行、
        f1.showKorsu();//普通のメソッド
        f1.coss();//インターフェイスのメソッド実行、
        System.out.println(f1.a);//インターフェイスの定数を呼び出す事も出来る、
    }
}
■■■■■■■■実行結果■■■■■■■■■■
ガス量:100ナンバー:7
ターボ:7770
コース:プロス
コース:プロス
777

クラスの階層

■スーパークラスを2個継承したい場合に、インターフェイスを使う、
class F1 implenents インターフェイス1,インターフェイス2,インターフェイス3,//複数実装出来る
{
} 
■インターフェイスを拡張
interface f1{}
interface f2 extends f1{}

インターフェイス

interface f1//インターフェイスの宣言
{
void show();//抽象メソッド
}

■インターフェイスの構文
interface f1
{
 型名 フィールド名 = 式;//初期化、フィールドはデフォルトでpublic static finalです、定数
戻り型 メソッド名();//メソッド処理は定義しない
}

■インターフェイルを実装する、
class F1 implements f2{}

■インターフェイスの場合はフィールドとメソッドはすべて定数です。
また、処理のない、メソッドを持ちます。サブクラスのメソッドをオーバーライドして実行するなどして、
分かりやすい、処理を記述する事が出来ます。

■インターフェイスはテンプレートみたいに使うと、便利、
たとえば、サブクラスにf1のタイヤのサイズ、エンジンサイズの値の表示を実行する記述を
書いておき、インターフェイスでは、タイヤのサイズ、エンジンサイズを表示した時には、showF1();
としておくと、たくさんのサブクラスがある場合、インターフェイスshowF1()メソッド実行の時はタイヤのサイズ、エンジンサイズを表示と決められているので、テーンプレート的な役割を果たす、
 大変便利です。また、インターフェイスはフィールドがfinal定数なので内容の保持も使える、

抽象クラス

■abstract class F1{}//abstractの修飾子が付いたものは、オブジェクトを生成できない、
New出来ない
■ abstractは処理内容が定義されてないメソッドを持ちます。
■instanceof演算子

if(クラス変数 instanceof F1)//クラス変数がF1クラスか調べている、

2010年8月4日水曜日

サブクラス・スーパークラスのコンストラクタの動き、

メインメソッドからスーパークラスコンストラクタ引数3個があり、サブクラス引数4個のコンストラクタがあると定義し、メインメソッドからスーパークラスインスタンス生成のコンストラクタに引数3個をわたした場合、スーパークラスのコンストラクタ引数3個だけが呼び出されます。この時、サブクラスのコンストラクタは呼び出されません
また、メインメソッドでサブクラスのインスタンス生成、引数4個のコンストラクタを実行した場合、
サブクラスの引数4個のコンストラクタの中で自動的にsuperメソッド実行され、
スーパークラスには、引数無のコンストラクタを定義していないのでエラーがでます。
エラーを回避するには、 superメソッドに引数3を渡すか、スーパークラスに引数無のコンストラクタを定義する必要があります。

クラスの階層をつくる

■スーパークラス⇒サブクラス1⇒サブクラス1_1⇒サブクラス1_1_1と出来ます。
スーパークラスを指定しないextends 指定を行わない時は、オブジェクトクラススーパークラスになり、Object クラスは、クラス階層のルートです。すべてのクラスは、スーパークラスとして Object を持ちます。配列を含むすべてのオブジェクトは、このクラスのメソッドを実装します。
■JavaのクラスはすべてObjectクラスを継承しています
public String toString(){}ではObjectクラスのtoStringメソッドをオーバーライドしています。
■equals()メソッドは、同じオブジェクトを指しているか、調べる時に使います。帰り値はbooleanです。
Stringクラスequals()メソッドは、オブジェクトが同じを調べるのではなく、文字列が同じか調べている。

*Objectクラス:equals(Object obj)
          このオブジェクトと「等価」になるオブジェクトがあるかどうかを示します。
*Stringクラス:equals(Object anObject)
          この文字列と指定されたオブジェクトを比較します。
■getClassメソッド:getClass()
          この Object の実行時クラスを返します。class クラス名 = オブジェクト.getClass();
が戻り値はクラス名です。

2010年8月3日火曜日

final ファイナルの概要

■finalなメンバークラスはサブクラスを拡張できません。
■finalなメンバーメソッドはサブクラスを呼び出しできません。
■finalなメンバーフィールドは値を変更できません、また、定数なは、大文字英数字で指定します。
public fainal int NUM = 1;//と大文字英数字で指定します。
あと、初期化も指定してください、呼び出すときは、「クラス名.NUM」で呼び出します。

スーパークラスと同じ名前のメンバを使う

サブクラスからスーパークラスのメソッドの呼び出し、
//F1クラスはスーパークラスです。
//F2クラスはサブクラスです。
class F2 extends F1
{
  public void showF()
   {
     super.showF();//スーパークラスのshowFメソッドの呼び出し
   }
}
スーパークラスのフィールドにアクセス
class F1
{
 int i; //サブクラスと同じ名です。
}

class F2 extends F1
{
 int i;//スーパークラスと同じ名で
  public void showF()
  {
   super.i = 2;//スーパークラスのフィールド、変数iにアクセス
   i = 1; //サブクラスのフィールド、変数iにアクセス
  }
}

オーバーライドとオーバーロード

■オーバーロードはメソッドな同じで、引数や型が違うメソッド、
■オーバーライドは、サブクラス・スーパークラスでメソッド名・引数・型が同じメソッドを定義すること。

■どんな時に使うか考えている、
//F1:スーパークラス
//F2:サブクラス

F1クラスのメソッドを使う時は、良いマシーンを作るチームの時はF1クラスのメソッドを呼び出し、
悪いマシーンを作るチームの時は、F2クラスのメソッドを呼び出すとかかな?・・

スーパークラスの変数でオブジェクト

サブクラスのオブジェクトはスーパークラスの変数でも扱えます
F1 f1 = new F2();//とか出来ます。
■javaはオブジェクトが違うクラスの変数でも、オブジェクト自体のクラスのメソッドが呼び出される、
■スーパークラスの変数だと、サブクラスのメソッドは呼び出せません

■オーバーライド とは サブクラス・スーパークラスの同じメソッド名・同じ引数のメソッドを定義すること。

//F1クラスはスーパークラスです。
//F2クラスはサブクラスです。
//配列で扱われているオブジェクトがどのクラスでも、生成元のクラスのメソッドが呼び出されます。
F1 f1[];
f1 = new F1[2];

f1[0] = new F1();
f1[0].setCar(111,222);//生成したインスタンス元、スーパークラスのメソッドが実行

f1[1] = new F2();
f1[1].setCar(1233,432);//生成したインスタンス元、サブクラスのメソッドが実行
■1つのメソッドが状況に応じて動く事を多様性(ポリモーフィズム)という

BigDecimalを勉強しました。

http://d.hatena.ne.jp/nattou_curry_2/20090211/1234366254

に詳しく載っています。

2010年8月2日月曜日

継承クラスメソッドのオーバーライド

サブクラスにスーパクラスと同じ名前のメソッド

スーパクラスのprivateメンバはアクセスできない?

■スーパクラスのprivateメンバはサブクラスからアクセスできない?
こんな時は、スーパークラスのprivateメンバをprotectedメンバに変更する、
仕様に応じて記述しましょう。

super() スーパークラスのコンストラクタ指定

サブクラスのコンストラクタのなかで、super(x、y)
を記述すると、スーパークラスの引数2個ありのコンストラクタが呼び出され、引数が渡されて実行されます。
public F1car (int num, double b,int c)
{
  super(num,b);//スーパークラス引数2個が呼び出される、
}

メインメソッド
F1car f1car = new F1car(122,90.0,3);//サブクラスの引数3個の呼び出し、処理ではサブクラスのsuper()がスーパークラスに引数2このコンストラクタを呼び出す事になります。

this()はそのクラスの別のコンストの呼び出し、
super()はスーパークラスのコンストの呼び出し、

■分かりやすくF1を題材にしたよ


class Car//車としての基本性能
{
    private int cc;
    private int gas;
   
    public Car(int c,int g)
    {
        cc= c;
        gas = g;
        System.out.println("車としての機能排気量は" + cc + "で、" + "ガソリン量は" + gas + "です");
    }
}

class F1car extends Car//F1カーとしてのターボを追加

{
    private int tab;
   
    public F1car(int c, int t, int g)
    {
        super(c,g);//スーパクラス引数2個のコンストが呼び出しです
        tab = t;//ここはF1カーのターボを追加してます

        System.out.println("F1カーとしての機能のターボ量は" + tab + "です");
    }
}


class Sample1_1
{
    public static void main (String args[])
    {
        F1car f1carnew = new F1car(1500,2000,100);//コンストでsuper渡しで基本の車、                              //引数の100はターボに代入される
    }
}

/*********実行結果********
車としての機能排気量は1500で、ガソリン量は100です
F1カーとしての機能のターボ量は2000です

*/

継承

extends(クラスの拡張)
inheritance(継承)クラスのメンバーを受け継ぐ
superclass(元となるスーパークラス)
subclass(サブクラス、新しいクラス)

Car//スーパークラス
{
private 排気量;
private ナンバー;

  public Car()
  {
   排気量 = 0;
   ナンバー = 0;
  }
  public void setF1(cc,num)
  {
  
   排気量 = cc;
   ナンバー =num;  }
  public void show()
  {
   System.out.print(排気量、ナンバー);
  }
}

class F1car 拡張 Car//サブクラス

サーキットコース;


/メインメソッド/
public static void main(String agrs[])
{
 F1car f1car = new F1car();//サブクラスの呼び出し
  f1car.setF1(12,44);//スーパークラスのメソッドを呼び出し
f1car.show();//スーパークラスのメソッドを呼び出し
}
■サブクラスからスーパークラスのメンバを呼び出せます。継承、カプセル化、多様性がjavaの強みです。
■メインメソッドからサブクラスのオブジェクトが呼び出された時に、スーパークラスの引数無のコンストラクタが先に実行され、次にサブクラスのコンストラクタが呼び出されまあす。
■スーパークラスのコンストラクタはサブクラスに継承できません、引数無のコンストラクタが自動的に呼び出されます。

2010年7月29日木曜日

クラス概要

(1)インスタンス変数 とは インスタンス(オブジェクト)が生成された時に実態をもつ変数、*private e;など
(2)インスタンスメドッド とは インスタンス(オブジェクト)が生成され時実態をもつメソッド、 ※public void car()
(3)クラス変数 とは public static  int a; インスタンス(オブジェクト)を生成しなくても呼び出せる、クラスに属する変数
(4)クラスメソッド とは public static void car(); インスタンス(オブジェクト)を生成しなくせも呼び出せるメソッド、クラスに属する。

(5)コンストラクタ とは クラス名と同じで、戻り値が無い、インスタンスを生成した時に呼び出される物です、
引数の数や型で呼び出すコンストラクタを変えることが出来ます。

JavaAPIドキュメント

日本語版が便利です。

パッケージ一覧・クラス一覧・仕様と3つの画面があります。
■java.langはパッケージ指定しなくても使えます。標準クラスです。
たとえば、Stringはクラスです。パッケージは指定しなくても使えます。

■コンストラクタ・メソッドもあります。

■Mathクラスのstatic int max(int a,int b);は
staticはクラスメソッドの、戻り型intの、max名と言うメドッソです。

※またクラスフィールドのPIは、Math.PIは円周率;

2010年7月28日水曜日

オブジェクトの配列

//クラスの配列を用意し、for文で用意した配列分のオブジェクトをつくります。
//クラス変数で生産された台数をカウントし、
//メソッドにクルマの番号とガソリン量を渡します。
import java.util.Random;

class Car
{
    public static int i;
    private int num;
    private double gas;
  
    public Car()
    {
        i++;
        System.out.println("車をつくたよ" + i + "車");
    }
  
    public void car1(int n,double g)
    {
        num = n;
        gas = g;
      
    }
  
    public void showCar()
    {
        System.out.println("num車" + num + "号車です。" + "gas:ガソリン量" +gas);
    }
  
    public static void showNum()
    {
        System.out.println("車は" + i + "台あります");
    }
}

class Sample9
{
    public static void main(String args[])
    {
        int i;
        Random rnd = new Random();

        Car[] car = new Car[5];
      
        for( i = 0; i < car.length; i++)
        {
            car[i] = new Car();
        }
      
        for( i = 0; i < car.length; i++)
        {
            int k = i;
            car[i].car1(k+1,rnd.nextInt(100));
        }
        for( i = 0; i < car.length; i++)
        {
            car[i].showCar();
        }
        Car.showNum();
      
        System.out.println("今日は何号車に乗っていきますか?");
        car[rnd.nextInt(car.length)].showCar();
    }
}
/****実行結果*******
車をつくたよ1車
車をつくたよ2車
車をつくたよ3車
車をつくたよ4車
車をつくたよ5車
num車1号車です。gas:ガソリン量23.0
num車2号車です。gas:ガソリン量31.0
num車3号車です。gas:ガソリン量40.0
num車4号車です。gas:ガソリン量88.0
num車5号車です。gas:ガソリン量39.0
車は5台あります
今日は何号車に乗っていきますか?
num車4号車です。gas:ガソリン量88.0*/

クラス型変数・基本型変数をメソッドの引数として使う

■基本が変数の値は値渡し、ことなる物を示す事になる。


■クラス型変数の値渡しは参照渡しになる。同じものを示すことになる
class Y1
{
 J1 j1 = new J1("text");
 I1.setT(j1);
}

class U1
{
  public void setT(J1 te)
  {
    text = te;
  }
}
※同じものを指します

ガーベージコレクション

■クラス型変数にnullを代入すると、ガーベージコレクション・メモリーが解放される事
■だたし2つのクラス型変数が同じもを示しているなら、片方は残ります「オブジェクトの事」。
■finalize()メソッドでメモリから破棄する事も出来る、

クラス型変数

■クラス型変数
J1 j1;
   j1 =  new J1;
J1 j2;
  j2 = j1;//新しいオブジェクトが出来たのではない、同じオブジェクトをさす事になります。

ラッパクラス・基本型とは

■基本型のint・double・char型を提供するクラス。
これらのクラスはnewしなくても使えます。
クラスメソッドも使えます。Integer.parseInt()などがそうです。
■Math.max(7,8);は大きい方を返します
これも標準クラスライブラリーです。

privateフィールド・publicメソッド・コンストラクタ・オブジェクト作成

//0から100までのXとYの座標を表す
class MyPoint
{
    //インスタンスフィールドです
    private int x;
    private int y;
   
    //引数のないコンストラクタ
    public MyPoint ()
    {
        System.out.println("初期座標はxは" + x + "です。Yは" + y + "です。\n");
    }
    //引数有のコンストラクタ
    public MyPoint (int px, int py)
    {
        if((px >= 0 && px <=100) && (py >= 0 && py <=100))
        {
            x = px;
            y = py;
            System.out.println("座標xは" + x + "で、座標Yは" + y + "です。\n");
        }
        else
        {
            System.out.println("0~100を入力してください");
        }
    }
    //インスタンスメソッド
    public void setX(int px)
    {
        if(px >= 0 && px <=100)
        {
            x = px;
            System.out.println("座標xは" + x + "です。\n");
        }
        else
        {
            System.out.println("0~100を入力してください");
        }
    }
    public void setY(int py)
    {
        if(py >= 0 && py <=100)
        {
            y = py;
            System.out.println("座標Yは" + y + "です。\n");
        }
        else
        {
            System.out.println("0~100を入力してください");
        }
    }
    //インスタンス変数
    public int getX()
    {
        return x;
    }
   
    public int getY()
    {
        return y;
    }
}

class Lessen5
{
    public static void main (String args[])
    {
        System.out.println("引数なしのコンストラクタを実行します");
        MyPoint mypoint1 = new MyPoint();
       
        System.out.println("引数2個のコンストラクタを実行します");
        MyPoint mypoint2 = new MyPoint(100,20);
       
        System.out.println("引数が1つあるメソッドを実行しました、");
        mypoint1.setX(55);
        System.out.println("引数が1つあるメソッドを実行しました、");
        mypoint1.setY(99);
       
       
        int pointX = mypoint1.getX();
        int pointY = mypoint1.getY();
        System.out.println("オブジェクトmypoint1XYの座標を受け取るint型のメソッドを実行しました");
        System.out.println("X座標は" + pointX + "で、Y座標は" + pointY + "です。\n");
       
        int point2X = mypoint2.getX();
        int point2Y = mypoint2.getY();
        System.out.println("オブジェクトmypoint2XYの座標を受け取るint型のメソッドを実行しました");
        System.out.println("X座標は" + point2X + "で、Y座標は" + point2Y + "です。");
    }
}
/*
実行結果

引数なしのコンストラクタを実行します
初期座標はxは0です。Yは0です。

引数2個のコンストラクタを実行します
座標xは100で、座標Yは20です。

引数が1つあるメソッドを実行しました、
座標xは100です。

引数が1つあるメソッドを実行しました、
座標Yは99です。

XYの座標を受け取るint型のメソッドを実行しました
X座標は100で、Y座標は99です。
*/

2010年7月27日火曜日

クラスメソッド・クラス変数  public static

//クラスメソッドテストとクラス変数テスト
class Car
{
    public static int sum = 0;
    private int num = 1;
    public Car()
    {
        sum++;
        System.out.println("コンスト時のsumです" + sum);
    }
    public static void showS()
    {

        System.out.println("インスタンス変数にアクセスしてみましたsumです" + sum);
       
    }
}

class Sample8
{
    public static void main(String args[])
    {
        Car.showS();
        Car.showS();
        Car.showS();
        Car.showS();
        Car car1 = new Car();
        Car car2 = new Car();
        Car car3 = new Car();
        Car car4 = new Car();
        Car.showS();//クラス変数表示
   }
}

/*
C:\JavaSrc\9>java Sample8
インスタンス変数にアクセスしてみましたsumです0
インスタンス変数にアクセスしてみましたsumです0
インスタンス変数にアクセスしてみましたsumです0
インスタンス変数にアクセスしてみましたsumです0
コンスト時のsumです1
コンスト時のsumです2
コンスト時のsumです3
コンスト時のsumです4
インスタンス変数にアクセスしてみましたsumです4//クラスメソッドでクラス変数をよびだしています
*/

コンスタラクタに修飾小を付ける

class J1
{
   private J1()
   {
     System.out.println("privateなコンスト実行");
   }
public J1(int n,double e)
  {
    this();     //privateなコンスト呼び出し
    System.out.println("publicなコンスト実行");
  }
}

J1 j1 = new J1();//引数無のコンストは呼び出しできません
J1 j2 = new J1(12,55);//引数無のコンストをthisで呼び出しています。
必ず引数2個のコンストしか呼び出せないような時つかえます。

別のコンストラクタを呼び出す

public Car(int x, double y)

{
  this();//引数なしのコンスト呼び出し、
}
■引数2このコンスト呼び出しは

this(11,33);//とする
*注意thisは先頭でしか使えません

2010年7月16日金曜日

mypoint1とmypoint2のオブジェクトかな?

//0から100までのXとYの座標を表す
class MyPoint
{
    //インスタンスフィールドです
    private int x;
    private int y;
   
    //引数のないコンストラクタ
    public MyPoint ()
    {
        System.out.println("初期座標はxは" + x + "です。Yは" + y + "です。\n");
    }
    //引数有のコンストラクタ
    public MyPoint (int px, int py)
    {
        if((px >= 0 && px <=100) && (py >= 0 && py <=100))
        {
            x = px;
            y = py;
            System.out.println("座標xは" + x + "で、座標Yは" + y + "です。\n");
        }
        else
        {
            System.out.println("0~100を入力してください");
        }
    }
    //インスタンスメソッド
    public void setX(int px)
    {
        x = px;
        System.out.println("座標xは" + x + "です。\n");
    }
    public void setY(int py)
    {
        y = py;
        System.out.println("座標Yは" + y + "です。\n");
    }
    //インスタンス変数
    public int getX()
    {
        return x;
    }
   
    public int getY()
    {
        return y;
    }
}

class Lessen5
{
    public static void main (String args[])
    {
        System.out.println("引数なしのコンストラクタを実行します");
        MyPoint mypoint1 = new MyPoint();
       
        System.out.println("引数2個のコンストラクタを実行します");
        MyPoint mypoint2 = new MyPoint(100,20);
       
        System.out.println("引数が1つあるメソッドを実行しました、");
        mypoint1.setX(55);
        System.out.println("引数が1つあるメソッドを実行しました、");
        mypoint1.setY(99);
       
       
        int pointX = mypoint1.getX();
        int pointY = mypoint1.getY();
        System.out.println("オブジェクトmypoint1XYの座標を受け取るint型のメソッドを実行しました");
        System.out.println("X座標は" + pointX + "で、Y座標は" + pointY + "です。\n");
       
        int point2X = mypoint2.getX();
        int point2Y = mypoint2.getY();
        System.out.println("オブジェクトmypoint2XYの座標を受け取るint型のメソッドを実行しました");
        System.out.println("X座標は" + point2X + "で、Y座標は" + point2Y + "です。");
    }
}
/*
実行結果

引数なしのコンストラクタを実行します
初期座標はxは0です。Yは0です。

引数2個のコンストラクタを実行します
座標xは100で、座標Yは20です。

引数が1つあるメソッドを実行しました、
座標xは55です。

引数が1つあるメソッドを実行しました、
座標Yは99です。

オブジェクトmypoint1XYの座標を受け取るint型のメソッドを実行しました
X座標は55で、Y座標は99です。

オブジェクトmypoint2XYの座標を受け取るint型のメソッドを実行しました
X座標は100で、Y座標は20です。
*/
追記:今回できたmypoint1とmypoint2のオブジェクトなんだろうかなと思う、

たしかに、オブジェクトが出来たし、便利な気もする今日この頃

2010年7月15日木曜日

ローカル変数

インスタンス変数やクラス変数とちがうローカル変数とは

ローカル変数とはメソッド内で宣言した変数で、ローカル変数が値を格納していられるのはメソッドが終了するまで、メソッドが呼び出されるたびに初期化します。

クラスメソッドの注意

public static void showS(){
this.num; //クラスメソッドは特定のオブジェクトに関連付けられて無いので、thisを使えない
       //また、インスタンスメソッドやインスタンス変数にアクセスできません。
       //クラスメソッドはオブジェクトが作成されなくても呼び出せる為です。
 System.out.println("インスタンス変数にアクセスしてみましたnumです" + num);
}

******エラー文*********
Sample8.java:13: static でない 変数 this を static コンテキストから参照すること
はできません。
Sample8.java:14: static でない 変数 num を static コンテキストから参照することは
できません。

クラス変数とクラスメソッド

class Car{

public static int sum; //クラス変数です、クラス変数は各オブジェクトから共有されるフィールドとなります。
public Car()
{
sum++
}
public static void show()//クラスメソッドはオブジェクトが作成されなくても、newされなくても、
             //メソッドを呼び出す事が出来ます。
{
System.out.println(sum);//sumはCarクラスが作成・newされるたびに1つ増えます
}

}

***************************
//クラスメソッドテストとクラス変数テスト
class Car
{
public static int sum = 0;

public Car()
{
sum++;
System.out.println("コンスト時のsumです" + sum);
}
public static void showS()
{
System.out.println("コンストメソッド時のsumです" + sum);
}
}

class Sample8
{
public static void main(String args[])
{
Car.showS();
Car.showS();
Car.showS();
Car.showS();
Car car1 = new Car();
Car car2 = new Car();
Car car3 = new Car();
Car car4 = new Car();
}
}

******実行結果******
コンストメソッド時のsumです0
コンストメソッド時のsumです0
コンストメソッド時のsumです0
コンストメソッド時のsumです0
コンスト時のsumです1
コンスト時のsumです2
コンスト時のsumです3
コンスト時のsumです4

&&と&は注意

&&とは注意

&&は左がfalseだったらfalseです。

2010年7月14日水曜日

インスタンス変数、クラスメソッド

class Car{

private int a;
private douvle b;

public Car(){
}
public void sCar(int c, double d){
a = c;
b = d;
}
}

*a,bはオブジェクトに関する物なので、インスタンス変数と呼び、
sCar()メソッドはインスタンスメソッドと呼びます。
オブジェクト作成されアクセスできるもの、

コンストラクターに修飾子を付ける

private Car(){}
public Car(int n,double b) {}

privateは外から呼び出せません、
public Car()を呼び出し、this();で呼び出すなどします。

コンストラクターのオーバーロード

コンストラクターもメソッドのオーバーロードと同じように再定義できます。
その時も、引数の数、型が同じ物を定義する事はできません。





コンストラクタの先頭でthis();を記述すると、引数の無いコンストラクタの処理ができます。
また、this(333,333);で引数2つのコンストラクタを呼び出す事が出来ます。

エクセルの表示画面をjpg保存

①エクセルをアクティブウインドー

②Altキー +   PrintScreen でクリップボード

③ペイントソフトにCtrl  + V で貼り付け

④表示したい部分を選択ツールで囲みコピー

⑤新規作成で貼り付けしてキャンパスサイズを調整

⑥名前を付けて保存、拡張子をJpg

⑦出来上がり

2010年7月13日火曜日

メンバーへのアクセス制限等

■メンバーへのアクセス制限
private
public
でカプセルかを行うと、フィールドに誤ったアクセスの確立が減ります。

privateメンバのフィールドにアクセスするには、
publicメンバーのメソッドを呼び出します


■メソッドのオーバーロード「再定義」

メソッドのオーバーロード時はメソッドの型や個数を変えておく。
似たような処理で変数の処理が1つだけ変更時など使う、


■コンストラクターの基本
1:コンストラクターはクラスなと同じにする必要があります。
2:コンストラクターはクラスのオブジェクトが呼び出された時に処理されます。



class Sample
{
private int num;
private int gas;

/*コンストラクター部分*/
public Sample()
{
num = 9;
gas = 29;
System.out.println(num);
System.out.println(gas);
}

}
class Sample13
{
public static void main(String args[])
{
/*コンストラクタの呼び出し実行*/
Sample sam1 = new Sample();
}
}
*フィールの値にはコンストラクタの場合、デフォルトで指定してあるものがあります。

クラスとはフィールド・メソッド

class MyPoint
{
/*フィールドです*/
int x = 0;
int y = 0;
    /*戻り値の無いメソッド*/
void setX(int n)
{
x = n;
}

void setY(int m)
{
y = m;
}
    /*戻り値のあるメソッドです*/
int getX()
{
System.out.println("int X は");
return x;
}

int getY()
{
System.out.println("int Y は");
return y;
}
}
class Sample11
{
public static void main(String args[])
{
MyPoint myp = new MyPoint();
        /*戻り値の無いメソッドに引数を渡しています*/
myp.setX(10);
myp.setY(22);
        /*戻り値のあるメソッドから引数を受け取っています*/
int a = myp.getX();
System.out.println("aは" + a + "です");
int b = myp.getY();
System.out.println("bは" + b + "です");
}

}

2010年7月12日月曜日

iphoneで最近の面白アプリ

Iphoneを手にして私もハヤ3カ月経ちます。

そんな、Iphone初心者の私が面白いと思った遊び心のあるアプリ紹介します!!

★まず、ベスト1 「集中線」

この人酔っぱらって悪だくみを考えている女性です。



こんな場面で「集中線」アプリで写真を撮ると

こんな感じになります。

↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓



*なんでもない写真が線を入れただけで、
何か起ころうとしている的な写真になります!!
*この後、実際にこの人暴れだし、周りの人の集中光線を浴びていました(笑い)


★続いて、ベスト2 「FaceFighter」

あまり好きでない上司やいつも小言を言われクソーと思っている人

よい解消方があります。

まず、クソーと思っている人物の写真を用意、



次に「FaceFighter」と言うアプリに取り込みます。

取り込んだ画像です。
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓


で!!、ブン殴ります!!

すると、こんな感じでボコボコになってしまいます。
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓


*かなりスッキリするのと、やり過ぎたかなと思う気持ちで

次に会うとき少し優しくなれますよ、

でも、上司や奥さんにバレナイようにPlayして下さいね

配列

■配列の箱の事をelementといいます。
test = new int[5]; でint型を5つ記憶出来ます。
test[0]
test[1]
test[2]
test[3]
test[4]
■int test[];
test[0] = 1;
.
.
.
.となります。

■配列の初期化
int a[] = {80,9,3,87};  と4つの配列要素の初期化

■配列の長さを知る
変数名.length

int a = {4,7,89,5,}
for(int b = 1; b < a.length; b++){
~
}
■多次元配列
int a [][];
a = new int[2][5];で2/5の10個の二次元配列

■2次元配列の初期化
int test[][] = {90,99,0,8,},{5,34,6,43};
test[0][1]は90で、test[1][1]は34になります。

2010年7月9日金曜日

Java なんでも記述

■importの使い方、
クラスでimportしなくてよいクラスもあるので、それの見分けかた。

■swith文でbreakが抜けていると、caseでの条件をすべて処理してしまします。

■比較演算子
&&の場合は、どちらともtrueの場合、
||の場合は、どちらかがtrueの場合、
!の場合は、条件と違う場合、
■条件演算子
char a = (b == 1)? 'a' : 'b';
ともしbが1だったらaが代入されます。それ以外はbが代入されます。

Jreとは

Jreはjavaのプログラムを動かすプラットフォームです。
開発環境が含まれていない物です。

2010年7月8日木曜日

Java演算子

■代入演算子: += 
■シフト演算子:>>:<<:2進数の場合は、2の整数を左へ1ずらすと2倍、2ケタずらすと4倍となります。
■演算子の順位:a+2*5の場合、2*5が先に処理されます。
■演算子の順位:(a+2)*5の場合、(a+2)が先に処理されます。
■同じ順位の演算子:a+b+1の場合、(a+b)+1のように左から処理されます。
■同じ順位の演算子:a=b=1の場合、a=(b=1)のように右から処理される演算子もあります。
■演算子優先順位:System.out.println("1+2は" + 1+2 + "です");だと結果は、「1+2は12」ですと文字列の連結として処理されます。
 同じ順位の演算子:数式の部分は()で囲むとわかりやすいでしょう。
■大きなサイズの型に代入する:
int a = 160;
double b = a;
とサイズの大きな型に代入すると160.0となります。
小←大には処理できません、処理するにはキャスト演算子
■キャスト演算子:int a = (int)b;とすると(int)で型を指定します。
キャスト演算子で小←大の処理の場合、その型で表せない部分は切り捨てとなります。
「精度が落ちている可能性」とエラーが出ます。
■型の異なる演算子だと大きい型に変換してから処理されます。
■同じ型どうしでの演算
int a = 5;
int b = 4;
bouble c = a / b;
だと、結果は1とboubleの型での処理結果は出ません、
boubleの型での処理結果を出したい場合は、少なくとも一方をキャスト演算子しないといけません、
bouble c = (double)a / (double)b;
と記述してください。

comhereは便利です

comhereコムヒアーはデスクTOPなどに作ったファイルを、コマンドプロンプト操作でのディレクトリやファイルへ移動します。

2010年6月16日水曜日

Linux&PHP&Mysql文字化け

Linux&PHP&Mysql文字化けで文字化けinitやMysqlの設定をすべてUTF-8に設定し、ても治らない、
どうしたものかと思ったら、DBのインポートをやり直したら解決、
どうやら、インポート時の読み込み文字コード設定が悪かったみたいです。

HTMLSQL使えます

HTMLSQLなかなか使えます。
select * from a などやるとHTMLタグを解析しsqlに似た使い方で色々アイデア次第で使えます。

2010年5月10日月曜日

print $this->session->get('ID');
と記述することで値を取得できる。
:::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::::
Sessionスタート後に
$this->session->set('ID','内容'); と記述することで値をセットできる。 
*************************
重要な注意点として、
session.auto_start
は無効にしておく必要がある。(ど こにもそうせよとは書いてないけど、有効になっているとセッションの保存が出来ない)
if
(!$this->session->isStart() || !$this->session->isValid())
{
$this->session->start();
}
$this->session->set(’hoge’,
‘1111111111′);
print
$this->session->get(’hoge’);
くらいか。次画面ではstart()はする必要はない。
***********************************
class Flare_Action_IndexTest extends Ethna_ActionClass {
    function prepare() {
        if ($this->af->validate() > 0) {
            return 'index';
        }
        return null;
    }
    // ...(省略)...
}
************************************
class Flare_View_Index extends Ethna_ViewClass {
    var $helper_action_form = array(
        'index_test' => null,
    );
    // ...(省略)...
} 


2010年4月22日木曜日

onCreatetって?

Activity starts
        v
    onCreate()
        v
    onStart()
        v
    onResume()
        v
Activity running
        v
    onFreeze()
        v
    onPause()
        v
    onStop()
        v
    onDestroy()
        v
Activity is shut down
::::::::::
Called when the activity is starting. This is where most initialization 
should go: calling setContentView(int) to inflate the activity's UI, 
using findViewById(int) to programmatically interact with widgets in the 
UI, calling managedQuery(ContentURI, String[], String, String[], String) 
to retrieve cursors for data being displayed, etc. 

You can call finish() from within this function, in which case onDestroy() 
will be immediately called without any of the rest of the activity 
lifecycle (onStart(), onResume(), onPause(), etc) executing. 

Derived classes must call through to the super class's implementation of 
this method. If they do not, an exception will be thrown.

Parameters:
  icicle  If the activity is being re-initialized after previous being 
    shut down then this Bundle contains the data it most recently 
    supplied in onFreeze(). Note: Otherwise it is null.
 

豊富な学校情報で

あなたのなりたいに

応えます☆

なるにはサイト

Android ボタン表示アプリ

package jp.allabout.android;

import android.app.Activity;
import android.os.Bundle;

import android.app.Activity;
import android.os.Bundle;
import android.widget.Button;
import android.view.ViewGroup.LayoutParams;

public class MyAndy extends Activity
{
    /** Called with the activity is first created. */
    @Override
    public void onCreate(Bundle icicle)
    {
        super.onCreate(icicle);

        Button button = new Button(this);
        button.setText("Button");
        setContentView(button, new LayoutParams(LayoutParams.WRAP_CONTENT,
          LayoutParams.WRAP_CONTENT));
    }
}