국비지원학원/Java

26일차

초코맛 2018. 11. 25. 23:03
반응형
*Class(설계도)

  • *oop언어
    • <(OO객체지향으로 쓰기도)(Object Oriented Programming: 
    • 객체지향언어 : 가급적 객체를 많이 만들고 사용하기를 권장하는 언어
    • 실생활의 모든 사물을 객체로 보고 그 객체를 컴퓨터에서 구현하고 사용하기 적합한 언어    <(의뢰를 받아 현업사원들 기준 업무들을 객체로 보아 RFP(요구사항 정의서)작성_현업의 업무를 컴퓨터를 통해서 구현하고 사용하기좋은
    • 3대특징 : 상속, 다형성, 캡슐화(문법이 다를뿐 oop언어는 이특징을 다 가짐)
    • ex) 안경을 객체(사용하는 대상물질,실체화된 구현체)화했을때 먼저 재료들을 모아 만들어야 한다. 그래서 필요한게 설계도가 필요. =>설계도가 잘만들어 져야 구현체가 잘만들어짐(설게도와 객체는 다름)
  • class의 형태/종류 7가지
  • class
  • abstract class
  • interface
  • Inner class
    • inner class
    • nested class
    • local class
    • anonymous inner class


*Class(설계도)

  • 참조형 데이터 : 실제값은 메모리의 다른곳(heap영역)에 위치하고 그 주소를 사용(stack->method)하는 데이터형
  • <ex)컨닝페이퍼: 내머릿속에 데이터가 없어서 다른곳에 적어두고 어디에 있는지만 앎, 얼마나 있는지는 모른다?
  •                            그 크기를 알수 없다.     < (주소는 4byte인건 알지만 시작주소를 가져서 알뿐 얼마나 갖고있는지는 모른다. (저장된 데이터의 크기))
  • 사용자 정의 데이터형(자료형)        
    • 데이터형: 값을 저장하기 위해서 미리 예약해 놓은 공간들의 이름들
    • 참조형 데이터형 : Class, 문자열, 배열
    • : 존재하는 데이터 형을 조합하여 이름을 부여하고 사용하는 것.     <(PL/SQL의 record와 비슷_%rowtype)
    • <ex)학생정보를 저장할때에는 단일데이터라고 볼수 없어, 학생의 번호,이름, 나이,,,,등의 여러개의 정보를 묶어 하나의 데이터로 만드는것(=>사용자 정의 자료형)
    •                    =>public class Student{         <클래스의 접근지정자는 딱 2개, default와 public
    • <heap에 올릴때는 객체화 라는거 하게됨
      • 객체화  :  클래스명 객체명 = new(객체생성용keyword=>heap에 생성을 도움) 클래스명();
        • 클래스명 객체명=null; 일때는 heap의 주소를 가지지 않는다. 만들어지지 않아서 쓸수 없다. (null은 참조형 데이터형에 초기화 값)  생성과 저장..다름

Class-일반적인(대부분의) 코드정의
class 클래스명

변수


인스턴스(member) 변수,static(class)변수

method


instance method, static method
main method(_실행되었을때 자동으로 불러지는 )

abstract class-상속을 위해 만드는 클래스
abstract class

변수




method




abstract method-구현의 강제성 부여(내자식은 이걸해야해)


자식이 구현해야할 일의 목록


interface-다중상속의 장점을 사용하기 위해서 사용(실제론 약결합(유연성향상)하기위해 사용)
interface 인터페이스명

상수(Constant)





abstract method
-1.7부터 default도 추가됨


자식이 구현해야할 일의 목록

Inner class(안긴 클래스)-이벤트(Event)를 처리(handling)하기 위해서 사용.(디자인을 하지 않으면 필요없다) 

inner class-내부클래스를 instance변수처럼 사용할 때 

class 클래스명


변수






method






public class Inner



변수






method





Inner class(안긴 클래스)-이벤트(Event)를 처리(handling)하기 위해서 사용.(디자인을 하지 않으면 필요없다) 
nested class-내부클래스를 static변수처럼 사용
class 클래스명

변수




method




static class Nested


변수(가급적 static으로 사용하게됨)





method




Inner class(안긴 클래스)-이벤트(Event)를 처리(handling)하기 위해서 사용.(디자인을 하지 않으면 필요없다) 
local class-내부클래스를 local
class 클래스명

변수





method



class Local




변수







method





Inner class(안긴 클래스)-이벤트(Event)를 처리(handling)하기 위해서 사용.(디자인을 하지 않으면 필요없다) 
anonymous innerClass-클래스를 Arguments로 사용할 때
method (new 부모클래스 {   <자식의 이름이 없어=>anonymous(익명)
자식의 method(){
}//거나 부모의 메소드라 오버라이드 됨
override method()
}=>인자값Arguments 가 됨
);



  • 작성법)
[접근지정자(Access Modifier)] class 클래스명 [extends 부모클래스명(_부모는 하나 단일 상속만 지원)] [implements 구현할 interface명,,,] {   
[ ] 생략가능

  • 사용가능한 접근지정자)
    • public : 패키지 외부에서 이클래스 사용가능.
    • default : 패키지 내부에서 사용.(_접근지정자 쓰지않은것을 의미) (package 접근지정자 라고도?)     <나만쓸래

  • 일반클래스의 접근지정자는 아니지만..) 
    • (클래스의) final : 상속불가(오버라이딩 불가?)
    • static : 중첩클래스를 만들때 (nested class 작성할때)
    • abstract : 추상 클래스를 작성할때(상속목적_으로 final과 붙으면 Error)
    • ex) 선택이 두개가 되면 상충?되서 Error
  • 클래스명은 낙타체로 구성

 



  • 작성순서)
1.대상 선정(RFP로 정의되어 나옴_인터뷰,설문지,브레인스토밍법등..비슷한직급끼리)
2.객체모델링(공통특징)
3.클래스 작성(<단지설계도일뿐)
4.객체 생성(instans화)
5.method 호출하여 생성된 객체에게 일을한다.
< 3,4,5=>실제코딩작업부분 / 1,2는 아키텍쳐가..PM?이 하게 됨.


  • 1.대상선정
검은색 마카펜  파란색 마카펜  빨간색 마카펜

  • 2.객체모델링(추상화 작업: 대상의 공통특징을 뽑는것)
마카펜-명사적특징(눈에보이는) : 색, 몸체, 뚜껑 
           -동사적특징(동작에관한) : 쓴다
  • 3.클래스작성(설계도작성)
class Maker{
    변수(명사적특징)
    method(동사적특징)
}
=>class Diagram
+(:접근지정자가 public)  #(:접근지정자가 protected)  -(:private,default) 실선(:관계) ->실선화살표(:상속_클래스상속) - ->점선화살표(:인터페이스 구현)     =>gliffy로 구현
클래스명
변수

method




+Marker
-String color
-int body
-int cap
=>instance변수 =>private
(private 변수에 값을 넣는 method)
(setter method-)
(getter method-)
+setColor(String ) :void(반환형이 뒤로)
+setBody(int ) : void
+setCap(int) : void
(public 이 되면 밖에서 아무값넣을수 있어..엉뚱한값)
+getColor() : String
+getBody() ; int
+getCap() : int
=>동사적인 특징이 아님
+write(String) : String
=>main메소드가 없기때문에 혼자실행되지 못하고 

 



*Setter method
  • <세팅할때<(쓰고자하는 필드에 올려놓는것)
  • instance변수에 값을 설정하는 일.
  • 밖에서 들어와야 하니 접근지정자는 public으로 반환형은 없고, 메소드명은 Set을 접두어로 변수와 결합하여 정의. 매개변수가 반드시 존재해야 한다.  <고정값
  • ex) public void setColor (String color) { 
  •      this.color = color;
  •      }
  •      public void setBody(int body){
  •         if(body...){//값의 검증
  •            this.body = body;
  •         }
  •      }
  • <메소드를 통하면 값에대한 검증을 할수 있어 이렇게 사용한다.
*getter method
  • 인스턴스변수에 설정된 값을 받아가는 일
  • 접근지정자는 public 반환형O
  • method명 get을 접두어로 변수와 결합하여 정의 매개변수는 x<가변일
  • ex) public String getColor () { 
  •           return color;
  •      }
  •      public int getBody(){
  •         return body;
  •      }

+UseMarker

+static main(String[]) : void




  • 4.객체화
클래스명(설계도명)  객체명  =  new  클래스명();
<재료를 떄려넣어 만드는 과정
Marker black = new Marker();
                           =>heap에 설정되면서 인스턴스 변수가 초기화.
  • 5.사용
black.setColor("검은색");
...
black.write("안녕하세요");



 
<일반적이지 않은경우 정의하는 방법 적어준다. >


public class Marker {
     private String color; //마카펜의 색
//   public String color; //마카펜의 색
     private int body; //마카펜의 몸체의 갯수
     private int cap; //마카펜의 뚜껑의 갯수
......
}
Marker m = new Marker();      //하게 되면
//=>노트


1.대상선정
ooo ☆☆☆ □□□
2.추상화
사람
명사적특징 : 머리,눈,코,입,머리카락,귀,몸통,팔,다리,손가락,발가락,손톱,눈썹,,,이름
동사적특징 : 잔다, 먹는다, 논다, 일한다, 공부한다, 춤춘다, 말한다,,,


+Person(여러사람접근가능)
-int eye, nose, mouth
-String name
=>밖에서 접근이 되지않게 
+setEye(int) : void
+setNose(int) : void
+setMouth(int) : void
+setName(String) : void
+getEye() : int
+getNose() : int
+getMouse() : int
+getName() : String

+eat(String, int)  :String
+eat() : String



+UsePerson

+static main(String[]) : void
4.객체 생성
Person teacksung = new Person();
teacksung.SetName("ooo");
teacksung.SetEye(2);
teacksung.SetNose(1);
teacksung.SetMouth(1);

5.사용
teacksung.eat();
eat("육회비빔밥",8000);

<인스턴트변수와 Setter method 색으로 구분하고, 만약 this 가 안붙어 있으면 파라미터가들어온 값이 그대로 자기 자신한테 저장>

 




<<<숙제>>>
+Ramen
-String maker
-int men
-int soup
-String name
+set(int) : void
+set(String) : void
+get() : int
+get() : String

+eat(String, int)  :String
+eat() : String
 


 










반응형

'국비지원학원 > Java' 카테고리의 다른 글

28일차  (0) 2018.11.28
27일차  (0) 2018.11.27
25일차  (0) 2018.11.23
24일차  (0) 2018.11.23
23일차  (0) 2018.11.21