JAVA SPRING/java

JAVA_004) 객체지향개념

오동순이 2023. 3. 16. 13:01

객체지향개념이란?

참고 블로그 : https://gangnam-americano.tistory.com/15

 

[JAVA] 객체지향 프로그래밍이란?

객체지향 프로그래밍이란? 1. 객체지향 프로그래밍이란? 객체지향 프로그래밍(Object-Oriented Programming)이란 프로그램을 설계하는 개념이자 방법론이다.줄여서 OOP라 부르며, 단어 뜻 그대로 프로그

gangnam-americano.tistory.com

1. 객체지향 프로그래밍이란?

 

객체지향 프로그래밍(Object-Oriented Programming)이란 프로그램을 설계하는 개념이자 방법론이다.

줄여서 OOP라 부르며, 단어 뜻 그대로 프로그램(실제세계)를 객체(사물)라는 기본 단위로 나누고 이 객체들간의 상호작용을 기본개념으로 한다.

 

객체지향 프로그래밍(OOP)은 프로그램을 유연하고 변경하기 쉽게 만들기 때문에 재사용성이 용이하여 대규모 프로젝트에서 많이 사용되는 방법론이다. 프로그램 개발과 유지보수가 용이하다는 점이 가장 큰 장점으로 꼽힌다

 

객체지향 언어의 장점과 단점

장점 : 

- 코드의 재사용성 용이

- 유지보수가 비교적 편함

- 대규모 프로젝트에 적합

단점 : 

- 처리속도가 느림

- 객체에 따른 용량증가

- 설계단계에서 시간이 소요가 큼

 

객체지향의 4가지 특징(추상화, 캡슐화, 상속, 다형성)

- 객체지향에서 추상화란 객체에서 공통된 속성과 행위를 추출하는 것을 의미한다.

- 캡슐화는 연관있는 변수와 메소드를 묶어주는 작업을 말한다.

- 클래스 개념이 도입되면서 상속을 통해 부모클래스의 속성과 기능을 이어받아(상속받아) 사용하는 것을 말한다.

- 다형성이란 프로그래밍 언어의 자료형 체계의 성질을 나타내는 것으로, 동일한 변수, 함수명 등이 다양한 방법으로 기능하는 것을 말하며 오버라이딩(Overriding), 오버로딩(Overloading)이란 형태로 제공된다.


메서드의 가장 용이한 것
반복적인 코드를 줄이는 것,
*작성지침* 하나의 메서드는 한가지의 기능 만 !

 

메서드
- 캡슐화, 정보은닉

클래스 : 설계도 틀
    -객체(Object) : 제품 =인스턴스
-인스턴스(객체가 상위, 메모리상에 존재)
       
개념의 원자화.

객체는 속성과 기능으로 이루어져있다
                      (funtion =  method)
  =객체는 속성과 메서드로 이루어져 있다.

 

void ? main?

public class MainArgsTest {

                // void < 공허 
                // public static void main(String[] args) < 메인 메서드는 출력값이 따로 존재X
                
    public static void main(String[] args) { 
    
    	//(String[] args)를 보고 Argument/Parameter or 입력값이라고 부름
        // for(int i=0; i<args.length; i++){
        //     System.out.println(args[i]);
        // }
        
        if(args[0].equals("-version")){
            System.out.println("Program Version : 0.1");
        }
        else{
            System.out.println("Bad Command "+args[0]);
        }
    
    }
}

 

new 선언, static이 뭐였지?  클래스 객체 변수 ?

public class ObjectTestEx02 {


    Mouse m1 = null; //클래스 객체 변수 선언
    m1 = new Mouse(); // 인스턴스화 (메모리에 생성)     //m1 . (m1 의!)라는 뜻


  final static int VALUE = 100;

	// static이 없으면 new를 생성해야뎀
	// static이 있으면 모든 객체 공유

  static int count = 0;

  void deviceConnectToggle(){

 boolean wirdless;
 	}
}

 

 

리턴 타입을 결정하는 것들

 

   public 공공의! 공개한당 (접근제한자) 정보은닉성!

 

 

참고 블로그 : https://www.techiedelight.com/ko/return-multiple-values-method-java/            

 

Java의 메서드에서 여러 값을 반환하는 5가지 방법

이 게시물에서는 Java의 메서드에서 여러 값을 반환하는 방법에 대해 설명합니다. Java 언어 사양에 따라 Java의 메서드는 한 번에 하나의 값만 반환할 수 있습니다. 따라서 메서드에서 여러 값을

www.techiedelight.com

    public static void makeDummyDate(int num) { => 리턴 타입 없음
    public static String inputMemberInfo() { => 스트링 타입으로 리턴해야함

class Main
{                  //반환타입 List<Object>
    public static List<Object> getDetails()
    {
        String name = "Ryan";
        int age = 25;
        char gender = 'M';
        long income = 100000;
 
        return Arrays.asList(name, age, gender, income);
    }
 
    // Java의 메소드에서 여러 값을 반환합니다.
    public static void main(String[] args)
    {   // 반환을 List<Object>로 
        List<Object> person = getDetails();
        System.out.println(person);
    }
}

참고 블로그 : https://hyoje420.tistory.com/14

 

[Java]오버로딩 & 오버라이딩(Overloading & Overriding)

오버로딩(Overloading) 오버로딩(Overloading)이라는 뜻은 사전적으로 '과적하다.'라는 뜻이다. C언어에서는 함수명이 고유하게 존재해야 한다. 즉 하나의 함수가 하나의 기능만을 구현해야 한다는 것

hyoje420.tistory.com

오버라이딩(Overriding)?  

@Override, extend, 

부모 클래스로부터 상속받은 메소드를 자식 클래스에서 재정의하는 것을 오버라이딩이라고 한다. 상속받은 메소드를 그대로 사용할 수도 있지만, 자식 클래스에서 상황에 맞게 변경해야하는 경우 오버라이딩할 필요가 생긴다.

오버라이딩은 부모 클래스의 메소드를 재정의하는 것이므로, 자식 클래스에서는 오버라이딩하고자 하는 메소드의 이름, 매개변수, 리턴 값이 모두 같아야 한다.

 

오버로딩(Overloading)?

toString()

자바의 한 클래스 내에 이미 사용하려는 이름과 같은 이름을 가진 메소드가 있더라도 매개변수의 개수 또는 타입이 다르면, 같은 이름을 사용해서 메소드를 정의할 수 있다

메소드의 이름이 같고, 매개변수의 개수나 타입이 달라야 한다. 주의할 점은 '리턴 값만' 다른 것은 오버로딩을 할 수 없다는 것이다.