2008년 04월 16일
실험프로젝트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;
}
}
우후~
더워서 그런지 너무 졸려서 제데로 수업을 못들었는데..;;
정말 중요한 부분에 대해서 강의가 되었다.
어휴~
참... 그래도 그렇게 이해가 안되고 그런건 아니라서
다행인것 같다.
이 글과 관련있는 글을 자동검색한 결과입니다 [?]
- String 비교 by capriso
- [2주차]알아두면 좋은 것들 by 이현미
- 2008.3.26 실험프로젝트 by selju
- [6주차]복습겸 응용?ㅎㅎ by 이현미
- GW-BASIC을 추억하며... - 학습자를 위한 대화형 언어 by 시즈하
# by | 2008/04/16 16:59 | 실험프로젝트 | 트랙백 | 덧글(1)





☞ 내 이글루에 이 글과 관련된 글 쓰기 (트랙백 보내기) [도움말]
어제 잠을 못잤나요? 하루 하루를 계획성있게 보내야지 손실이 없습니다.