• 티스토리 홈
  • 프로필사진
    Song hyun
  • 방명록
  • 공지사항
  • 태그
  • 블로그 관리
  • 글 작성
Song hyun
  • 프로필사진
    Song hyun
    • 분류 전체보기 (780)
      • 백준 (0)
      • 일본어 (0)
        • 모모타로TMC (0)
      • 영어 (2)
        • Diary (0)
        • Toast Masters (2)
      • 메모 (13)
      • 설치 메뉴얼 (30)
      • Java (178)
      • MySQL (60)
      • JSP (67)
      • Springboot (46)
      • HTML,CSS, JS (71)
        • HTML (8)
        • CSS (12)
        • JavaScript (37)
        • HTML&CSS 스터디 (13)
      • C++ (7)
      • Linux (7)
      • JPA (34)
      • Kotlin (2)
      • Flutter (42)
      • Error Note (39)
      • 디자인 패턴 (12)
      • 디지털논리회로 (4)
      • 데이터베이스 시스템 (8)
      • 알고리즘 (7)
      • 운영체제 (3)
      • 이산수학 (3)
      • 인공지능 (1)
      • 자료 구조 (14)
        • 기본 개념 (14)
        • 자료구조 스터디 (0)
      • 💡My project (76)
        • 팩맨 : Java Swing 게임 제작 프로젝트 (6)
        • 네이트톡 : Java 소켓 통신 프로젝트 (4)
        • 포켓옥션 : HikariCP&JDBC CRUD 프.. (3)
        • 이지 부산 : BDIA-Devton 2024 프로.. (20)
        • 그린 유니버시티 : JSP를 사용한 학사관리 프로.. (1)
        • 애드 포커 : 웹 소켓과 Spring을 사용한 카.. (1)
        • 셸위 : 게임 친구 매칭 사이트 (21)
        • 다모아 : 개발자 중개 플랫폼 (20)
      • 📗스터디 (13)
        • CNN : 웹개발 스터디 (10)
        • Node&React로 유튜브 사이트 만들기 (3)
      • 📙독서 및 강연 기록 (36)
        • 강연 (14)
        • 독서 (22)
  • 방문자 수
    • 전체:
    • 오늘:
    • 어제:
  • 최근 댓글
      등록된 댓글이 없습니다.
    • 최근 공지
        등록된 공지가 없습니다.
      # Home
      # 공지사항
      #
      # 태그
      # 검색결과
      # 방명록
      • [Java] 18. 객체 지향, 클래스, 인스턴스화
        2024년 04월 15일
        • Song hyun
        • 작성자
        • 2024.04.15.:08
        728x90
        반응형

        1. 객체지향이란? (OOP; Object Oriented Programming): 프로그래밍 패러다임 중 하나로, 실세계의 사물 또는
        실체로 존재 가능한 것을 객체로 모델링하여 프로그램을 구성하는 방법이다.

        -객체에는 속성(Properties)과 사물이 동작하는 기능(Methods)으로 이루어져 있다. 
        이들은 객체의 상태와, 객체가 수행할 수 있는 작업을 나타낸다.

        (1) 객체의 속성(Properties): 객체의 특성, 상태, 데이터를 의미한다.
        (2) 객체의 행동(Methods): 객체가 수행할 수 있는 작업, 기능을 의미한다.

         

         

         

         


        2. 객체의 특징:
        (1) 캡슐화(Encapsulation): 객체는 자신의 데이터와 그 데이터를 조작하는 메서드를 하나의 단위로 관리한다.
        이를 통해 상세한 구현 내용을 숨기고(정보 은닉), 외부에서는 객체가 제공하는 메서드를 통해서만 상호작용할 수 있게 한다.

        (2) 독립성: 객체는 독립적으로 존재하며, 각 객체는 고유의 속성과 메서드를 가진다.
        객체 간에는 메세지를 통해 상호작용한다.

        (3) 추상화(Abstraction): 필요한 부분만 추려내고, 불필요한 정보는 제거하여 복잡도를 관리할 수 있게 하는 핵심적인 개념이다.
        추상화를 통해 핵심적인 정보만 남기면서, 애플리케이션을 더욱 효율적으로 만들 수 있다.

         

         


        3. 클래스
        (1) 클래스(Class): 객체를 생성하기 위한 템플릿, 혹은 설계도 역할을 한다.
        클래스는 객체의 상태를 나타내는 필드(변수)와, 객체의 행동을 정의하는 메서드(함수)로 구성된다.
        클래스는 데이터와, 그 데이터를 조작하는 코드를 묶어 놓은 컨테이너와 같습니다.

        (2) 클래스를 만들 때의 규칙
        -클래스의 이름은 대문자로 시작한다.
        -파스칼 케이스(Pascal Case)와 카멜 케이스(Camel Case) 명명 규칙 사용하기.

         

        (3) 클래스를 인스턴스화(instance) 하다?

        -프로세스/인스턴스화: 프로그램이 메모리를 할당받는 것.
        -인스턴스(Instance): 실제 클래스 기반으로 생성된 객체. 이는 각각 다른 멤버 변수 값을 가지게 된다.

        -new 키워드와 생성자를 사용해 인스턴스를 생성하게 된다. 

         

         

        **인스턴스화 되는 과정
        1. 컴파일러가 변수를 받으면, main이라는 메모리 공간을 할당받는다.

        2. 참조 타입은 주소값을 통해 '힙'이라는 동적 메모리 공간에 들어가게 된다. 
        3. 참조 타입은 주소값이 메인에 담김 -> 주소값을 통해 힙에 객체 속성이 저장된다.
        4. . 연산자를 통해서 접근할 수 있다.

         

        *참조 타입(Reference Type)=대문자로 시작하는 자료형 (ex: String)
        -변수 괄호 안에 변수명이 아닌, 주소 값이 들어간다. 

         

        *동적 메모리 영역 (Heap)=객체의 멤버 변수가 저장되는 곳!

        -생성된 인스턴스는 동적 메모리(Heap memory)에 할당된다.

        -C,C++에서는 사용한 동적 메모리를 프로그래머가 해제시켜야 한다. (free(), delete)

        -Java에서는 Gabage Collectot가 주기적으로 사용하지 않는 메모리를 수거한다.

        -하나의 클래스로부터 여러개의 인스턴스가 생성되고, 각기 다른 메모리 주소를 가지게 된다.

         

         

         

         

        4) 클래스를 만드는 이유

        - 클래스를 만드는 것은 금형을 만드는 것과 같다.

        한 번 클래스를 만들면, 같은 형태의 객체들을 쉽게 만들 수 있다. (붕어빵 틀-붕어빵)

         

         

        연습문제 1.

        게임 내에서 사용할 전사 캐릭터 정보를 입력받을 수 있도록,

        Warrior 클래스를 만들고, Warrior 클래스를 2개 만든 뒤 출력하시오.

         

        1. Warrior 클래스 만들기

        -우선 Warrior.class 파일을 만든다.

        -Warrior.class 파일에 전사 캐릭터를 만드는 데 필요한 정보(캐릭터 이름, 키, 몸무게, 피부색, 체력...)를 입력한다.

         

        2. Warrior 클래스 2개 만들기

        -Warrior warrior1 = new Warrior(); 는 새 Warrior 클래스를 만든다.

        -Warrior.name / Warrior.health 등을 통해 클래스 내부의 값(속성)에 상수를 할당한다.

        -System.out.println(클래스명. 속성명)을 통해 값을 출력한다.

         

        package ch05;
        
        public class Warrior {
        	
        	//속성
        	String name;
        	double height;
        	double weight;
        	String color;
        	int health;
        	int attackPower; // 공격력
        	int defensePower; // 방어력
        }
        package ch05;
        
        public class WarriorMainTest {
        	// 메인 함수(코드의 시작점) -> JVM Stack (메모리 할당)
        	public static void main(String[] args) {
        		// new -> 예약어
        		// () -> 생성자
        		Warrior warrior1 = new Warrior();
        		// 메모리에 올라가면 객체라고 부른다.
        		// 객체는 heap이라는 동적 메모리 영역에 올라간다.
        		// 객체의 접근은 . 연산자를 통해서 접근할 수 있다.
        		
        		Warrior warrior2 = new Warrior();
        		
        		warrior1.name = "티모";
        		warrior1.health = 100;
        		warrior1.attackPower = 30;
        		warrior1.defensePower = 1;
        		
        		System.out.println("--------------");
        		
        		warrior2.name = "야스오";
        		warrior2.health = 120;
        		warrior2.attackPower = 20;
        		warrior2.defensePower = 2;
        		
        		System.out.println("--------------");
        		System.out.println(warrior1.name);
        		System.out.println(warrior2.name);
        		
        		
        	}
        }
        728x90
        반응형

        'Java' 카테고리의 다른 글

        [Java] 20. 함수, 인스턴스화, 메서드 연습 문제  (0) 2024.04.16
        [Java] 19. 런타임 데이터 영역 (Run time data Area)  (0) 2024.04.15
        [Java] 17. 함수와 메서드  (0) 2024.04.15
        [Java] 16. 이중 for문: 별 그리기 문제  (0) 2024.04.15
        [Java] 17. 콘솔에서 입력 받기 : Scanner 클래스  (0) 2024.04.15
        다음글
        다음 글이 없습니다.
        이전글
        이전 글이 없습니다.
        댓글
      조회된 결과가 없습니다.
      스킨 업데이트 안내
      현재 이용하고 계신 스킨의 버전보다 더 높은 최신 버전이 감지 되었습니다. 최신버전 스킨 파일을 다운로드 받을 수 있는 페이지로 이동하시겠습니까?
      ("아니오" 를 선택할 시 30일 동안 최신 버전이 감지되어도 모달 창이 표시되지 않습니다.)
      목차
      표시할 목차가 없습니다.
        • 안녕하세요
        • 감사해요
        • 잘있어요

        티스토리툴바