실험프로젝트7주차_001

아.. ㅡㅡㅋ 쪽지시험 2번문제를 틀렷다 ㅡㅡㅋ
철자가 틀린것두 아니구..
치명적인 논리적 오류를 ㅡㅡㅋ
아 머리아파 ㅡㅡㅋ

String str [] = new String [5];
String str [1] = new String ("가");
String str [2] = new String ("나");
String str [3] = new String ("다");
String str [4] = new String ("라");
String str [5] = new String ("마");

라고 적었다.. 와.. 미쳤나봐 ㅋㅋㅋ
String을 왜 선언하니?
그것도 그렇고 ㅡㅡㅋ
0부터 시작인데 왜 1부터 시작하니?
ㅡㅡㅋ ㅋㅋㅋㅋ

아무래도 잠을 좀 못잤더니..;;
미쳤나봐~ 쉬운거 막틀리네 그냥 막~
담부턴 좀 꼼꼼히좀 합시다~~~~~~~

자 지금부터는 오늘 배우는 내용 정리~~~~~~~~~~~~~~~~~~~

-------------------------------------------------------------------------------

● 객체지향과 절차지향
절차지향 : 데이터 구조(변수등 ) 와 그 데이터를 변화 시키는 알고리즘(함수)으로 구성 ( 예 c, basic )
객체지향 : 객체들이 서로 메세지들을 주고 받음으로 원하는 결과를 얻는다. 각 객체는 고유의 데이터와 데이터를 처리할 수 있는 메소드로 구성 된다. ( java, c++)

익숙하지 않겠지만..
가령 성적 처리를 한다고 할때..
절차 지향은 공유데이터에 있는 것을 함수로 빼와서 결과를 출력하는 것이고
객체지향은 각 객체가 각 학생을 표현한다. 그리하여 객체를 불러와 결과 출력.

객체지향은 실제생활과 많이 비슷하다. 즉, 현실 세계를 그대로 반영하는 프로그래밍.

객체지향은 추상화! 캡슐화! 상속성! 다형성!

장점. 쉽고 자연스럽게 프로그래밍 할 수 있다.( 현실세계 그대로 반영 )
        생산성 향상.
        만들어 놓은 모듈을 재사용 가능
        프로그램의 확장및 유지 보수 에 유리

객체는 데이터와 메소드로 구성되어 있다.
예) 시계
데이터: 시,분,초,일,월,년,오전오후,요일,알람시분초
메소드: 알람이 울림. 알람설정. 현재시각을 보여줌. 현재시각 설정.
 
class Myclock
{
    public static void main(String arg[]){
        int hour, min, sec;
        setTime( int h, int m, int s ){
        hour = h;
        min = m;
        sec = return;
        }   
        String gettime(){
            return hour+"시"+min+"분"+sec"초");
        }
    }
}

● 클래스_1

public class Study0416_1 {
    public static void main(String args[]) {
        System.out.println("new 연산자를 사용해 객체를 생성합니다");
        ClassExam obj = new ClassExam( );
 obj.method();
    }
}

class ClassExam {
    private String memberVar;
   
    public ClassExam( ) {
        System.out.println("생성자는 객체가 생성될때 제일먼저 호출됩니다");
        System.out.println("memberVar의 값을 \"멤버변수\"로 초기화 합니다.");
        memberVar = "멤버변수";
    }
    public void method( ) {
     System.out.println(memberVar);
 return;
    }
}

=멤버 변수=
-클래스의 속성을 정의하기 위해 선언 된 변수
-메서드 내부가 아닌 클래스에 바로 선언한다.
-접근 제어자를 가질 수 있는다.(public, private, protected)
-사용 형식 : [접근 제어자] 데이터형 변수이름 
                        같은클래스  같은패키지  상속받은클래스  관계업는클래스      
public                        0            0                    0                        0
protected                    0            0                    0                        x
default(friendly)            0            0                    x                        x
private                        0               x                x                            x

public              :  어떤 클래스에서도 접근 가능                     
protected          : 같은 클래스, 하위클래스, 같은패키지내 모든 클레스에서 접속가능
default(friendly) : 같은 클래스 또는 같은 패키지 내에 있는 모든 클래스 내에서 접근가능.
                           단 protected와는 달리 하위클래스에서는 접근할 수 없다.         
private          :  같은 클래스 내에서만 접근가능. 
                      클래스가 제공하는 기능을 내부적으로 구현할 때 주로 사용하고, 
                        이렇게 함으로써 완벽한 정보은닉이 가능.
 

## 대부분 우리는 public 과 private 를 많이 사용하므로 필히 이해 바람. ##

=멤버 메서드=
-클래스 내부의 멤버 변수가 무엇이고 어떻게 사용되는지 몰라도
멤버 메서드를 사용하여 원하는 동작이나 결과를 얻을 수 있다.(은닉화, 캡슐화)
-캡슐화는 프로그램은 멤버 변수의 잘못된 사용을 차단해
데이터의 신뢰성을 향상시킨다.
-사용 형식
[접근 제어자] 반환데이터형 메서드이름(인자)
{
    실행문;
}

● 패키지

그렇게 중요하진 않지만.. 만들면 자기가 직접 폴더를 만들어 저장 되므로...
관리가 용이.

● 클래스_2

예)
import java.util.Date;

public class Study0416_2 {
    public static void main(String args[]) {
 System.out.println( new /*java.util.*/Date() );   // 원래는 /* ~ */ 내용을 써야 하지만....
 System.out.println( new Date().toString() );      // import선언을 했으므로 생략 가능.
 System.out.println( new Date().getTime() );
    }
}

String            str               =                  new String( );
                    ↑                                         ↑
        객체를 가르키는 이름                      실제객체.

>>  new Date()  →   이것또한 객체.


예) 시간 클래스를 이용한 게임 만들기.. 초세기

import java.util.*;
import java.io.*;

public class Study0416_4 {
    public static void main(String args[]) {
 System.out.println("초 세기 게임입니다. 10초 대에 멈추면 성공.\n엔터를 누르면 시작합니다."); 
 BufferedReader br = new BufferedReader
  ( new InputStreamReader(System.in) );
 try{
  br.readLine();  
 }catch(IOException e){}
  Date date = new Date();
 long start = date.getTime();

 try{
  br.readLine();
 }catch(IOException e){}
 date = new Date();
 long stop = date.getTime();
 double a = stop-start;
 a/=1000;
 System.out.println(a);
 if ( a < 11 && a > 10 ){
  System.out.println("성공하였습니다.경과된 시간은 "+a+"입니다.");
 }
 else {
  System.out.println("실패하였습니다.경과된 시간은 "+a+"입니다."); 
 }
    }
}


예) 좀더 객체지향적인 모습으로 변신~ ㅋㅋㅋ
import java.util.*;
import java.io.*;

public class Study0416_6 {
    public static void main(String args[]) {
 DateGame dg = new DateGame();
 BufferedReader br = new BufferedReader
  ( new InputStreamReader(System.in) );
  Date date = new Date();
 long start = date.getTime();
 try{
  br.readLine();  
 }catch(IOException e){}

 System.out.println(dg.stop()+"초");

if ( a < 11 && a > 10 ){
  System.out.println("성공하였습니다.경과된 시간은 "+a+"입니다.");
 }
 else {
  System.out.println("실패하였습니다.경과된 시간은 "+a+"입니다."); 
 }

    }
}
class DateGame{
 private long start, stop;
 public DateGame(){
  start = new Date().getTime();
 }
 public float stop(){
  stop = new Date().getTime();
  return (float)(stop-start)/1000.0f;
 }
}
좀더 길어졌지만...
프로그램 자체는 좀더 객체지향적이어 졋다.
좀더 보기도 쉽다.

예3)

import java.io.*;

public class Study0416_7 {
    public static void main(String args[]) {
 Book bk = new Book();
 bk.setData();
 System.out.println("입력하신 책제목과 저자는 다음과 같습니다.");
 bk.getData();
    }
}
class Book{
 private String bookName = null, bookMan = null; 
 public BufferedReader br = new BufferedReader
  ( new InputStreamReader(System.in) );
 public void setData(){
  System.out.print("책 제목을 입력하세요 : ");
  try{
   bookName = br.readLine();  
  }catch(IOException e){}
  System.out.print("저자를 입력하세요 : ");
  try{
   bookMan = br.readLine();  
  }catch(IOException e){}
 }
 public void getData(){
  System.out.print("책제목 : "+bookName",\t);
  System.out.print("저  자 : "+bookMan);
  return;
 }
}

우후~
더워서 그런지 너무 졸려서 제데로 수업을 못들었는데..;;
정말 중요한 부분에 대해서 강의가 되었다.
어휴~
참... 그래도 그렇게 이해가 안되고 그런건 아니라서
다행인것 같다.






 

             

이 글과 관련있는 글을 자동검색한 결과입니다 [?]

by 날아라숑카 | 2008/04/16 16:59 | 실험프로젝트 | 트랙백 | 덧글(1)

트랙백 주소 : http://dduckjava.egloos.com/tb/248759
☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
Commented by 김교수 at 2008/04/16 18:39
시험지를 받고나서 날아라숑카군의 2번 답을 보고 좀 ...

어제 잠을 못잤나요? 하루 하루를 계획성있게 보내야지 손실이 없습니다.

:         :

:

비공개 덧글

◀ 이전 페이지          다음 페이지 ▶