개요객체 지향 프로그래밍에서 중요한 개념 중 하나복잡한 현실세계의 문제를 간소화, 관련있는 특징만을 뽑아내어 프로그래밍에 적용추상화정의복잡한 것을 단순화하는 과정주어진 문제나 대상에서 핵심적인 특징이나 구조만을 추려내는 것추상화 그림 특징현실 세계의 대상이나 개체를 정확하게 표현하는 것이 아님핵심적인 특징 혹은 느낌 을 담아냄간혹 그림을 보고도 무엇인지 알아내기 힘든 경우가 있음객체지향에서의 추상화여러 가지 사물이나 개념에서 공통되는 특성이나 속성을 추출 혹은 파악이집트 화가들은 그 사람의 사실적 모습이 아니라 각 부분의 특징을 가장 잘 표현할 수 있도록 신체를 분해/결합하여 벽화를 그림실제 모습이 아닌 추상적인 모습을 그려서 그 인물의 특징을 더욱 정확하게 묘사하려고함 Uploaded by N2T
개요객체지향에는 중요한 4대 특성이 있음캡 상 추 다4대 특성캡슐화(Encapsulation)개념정보 은닉의 원칙에 따라 데이터와 데이터를 처리하는 함수를 하나로 묶는 것을 말함목적데이터의 접근을 제한하여 객체의 상태를 보호상속(Inheritance)개념기존의 클래스에 기능을 추가 + 변경하기 위해 사용되는 기능부모 클래스의 속성과 메서드를 자식 클래스가 물려받는 것을 읨목적코드의 재사용과 확장성 향상을 위해 사용상속의 경우 솔직히 단순한 상속 의 개념이 아니다. 이와 관련된 내용은 다음 포스팅에 설명하겠다.추상화(Abstraction)개념복잡한 시스템을 간단한 개념으로 변환하는 과정목적모델링을 통해 복잡한 현실 세계의 객체를 소프트웨어 객체로 표현하기 위함다형성(Polymorphism)개념하나의 인터페..
개요붕어빵틀과 붕어빵 비유는 클래스와 객체의 관계를 설명할 때 흔히들 사용됩니다.하지만,, 이 비유가 정확한지에 대한 의문이 있습니다.전통적 비유의 문제점 (잘못된 메타포)실제로 붕어빵틀과 붕어빵 의 비유가 명확한 설명이 아닐 수 있음실제로 붕어빵틀 붕어빵 = new 붕어빵틀() 설명이 이해가 되시나요..?붕어빵틀이라는 개념의 붕어빵이라니..더 나은 비유붕어빵틀이 붕어빵을 찍어낸다 라는 논리라면금형 기계가 붕어빵틀을 찍어낸다 라는 논리도 성립해야합니다.금형기계 붕어빵틀 = new 금형기계() 와 같은 코드로 이어질 수 있지만, 말이 되지 않을수 있습니다.팩토리붕어빵틀은 붕어빵을 만드는 팩토리입니다.팩토리는 디자인 패턴 중 하나로서, 객체를 생성하는 로직을 캡슐화 하는 것을 목적으로 합니다.클래스와 객체의..
개요객제 지향은 인간의 직관과 생활을 반영한 개발 방식프로그래밍 언어의 발전 & 인간기계어 어셈블리어 → C → C++ → 자바 같이 점점 더 인간 친화적으로 변화해옴포인터의 개념은 인간이 이해하기 어려웠음이로 인하여 객체지향적 접근 방식이 탄생하였습니다객체 지향의 본질현실 세계의 반영임객체 지향 개념은 현실 세계의 사물, 객체 에 기반합니다.함수와 차이점구조적 프로그래밍의 핵심은 함수함수는 코드를 논리적 단위로 분할하는 역할을 수행함BUT객체지향에서는 현실 세계의 사물 을 기반으로 프로그래밍하는 새로운 접근 방식을 제시객체와 클래스?객체세상에 존재하는 모든 것을 의미함.각각 사물은 고유하고 속성과 행위 를 가지고 있음.클래스객체를 분류하는 방법박상준, 김상준, 전상준이라는 이름은 가진 사람은 모두 사람..
개요Java 8 기점으로 격변함Permanent Generation 영역이 사라지게 되고MetaSpace 영역이 등장하였다.Java8 이전의 메모리 구조Permanent Generation정의클래스의 메타데이터와 상수 풀을 저장하는 영역특징힙 영역의 일부였다고 합니다. ㄷ. ㄷ힙 영역을 나눠 사용하는 것이다 보니, 크기가 제한적이여서실제로 Java 8 이전에는 OOM 이 발생하는 상황이 더 잦았다고 합니다Java8 이후의 메모리 구조MetaSpace == MethodArea정의Permanent Generation 영역을 대체하기 위해 등장했습니다.특징Native Memory 에 할당됨제한된 크기가 없음메모리 누수 우려가 낮아졌음STATIC 과 메모리static 변수클래스 로딩 시점에 메모리에 할당됩니다...
HTML 삽입 미리보기할 수 없는 소스 HTML 삽입 미리보기할 수 없는 소스 변수와 메모리: 전역 변수 쓰지 말라니까요! 에 대한 추가입니다. public class Start5 { static int share; public static void main(String[] args) { share = 55; int k = fun(5, 7); System.out.println(share); } private static int fun(int m, int p) { share = m + p; return m - p; } } main 메서드의 시작 프로그램 시작시 main 메서드가 호출됨 main 메서드의 스택 프레임이 생성되며, 스택영역의 맨 위에 위치합니다 share 변수의 값 할당 main 메서드 내에서..